美文网首页
android Viewpager取消预加载及Fragment方

android Viewpager取消预加载及Fragment方

作者: 破荒之恋 | 来源:发表于2017-09-11 15:34 被阅读341次

    在特定场景不需要ViewPager对数据预加载,而他的setOffscreenPageLimit(i)中i默认为1,只能传比1大或等于的参数,那么如何禁止预加载呢?网上有两种教程:参考下面

    http://www.cnblogs.com/flyme2012/p/4175510.html

    后来我用了第二种方法:直接copy上下面的代码进去项目中就可以禁止ViewPager预加载了

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
    //判断Fragment中的ListView时候存在,判断该Fragment时候已经正在前台显示 通过这两个判断,就可以知道什么时候去加载数据了
    if (isVisibleToUser && isVisible() && mPullToRefreshGridView.getVisibility() != View.VISIBLE) {
    initData(); //加载数据的方法
    }
    super.setUserVisibleHint(isVisibleToUser);
    }
    这个方法会在切换到Fragment显示的时候去调用。
    为了保证一开始加载Fragment的时候该方法提前调用,导致的数据不会加载,我在代码中做出了如下的判断:
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
    if (getUserVisibleHint() && mPullToRefreshGridView.getVisibility() != View.VISIBLE) {
    initData();
    }
    super.onActivityCreated(savedInstanceState);
    }

    特别注意:
    1.在刚开始加载Fragment的时候,setUserVisibleHint这个方法比onCreated方法执行的还要早。预加载的Fragment就不会执行这个方法。
    2.在VIewPager 切换到某个Fragment的时候,还会调用该方法。

    相关文章

      网友评论

          本文标题:android Viewpager取消预加载及Fragment方

          本文链接:https://www.haomeiwen.com/subject/snlfsxtx.html