美文网首页程诺陪你学Android
Android:ViewPager和TabLayout连用时,去

Android:ViewPager和TabLayout连用时,去

作者: 程思扬 | 来源:发表于2019-05-07 11:50 被阅读16次

    直接上代码,把代码copy到Fragment里面就可以了,最主要的就是一个方法:

    setUserVisibleHint(boolean isVisibleToUser)

    代码如下:

    先定义两个成员变量:

    //Fragment的View加载完毕的标记
    private boolean isLoading = false;

    //Fragment对用户可见的标记
    private boolean isUIVisible;

    //setUserVisibleHint和lazyLoad两个方法是为了去除viewPager+fragment的懒加载

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        //isVisibleToUser这个boolean值表示:该Fragment的UI 用户是否可见
        if (isVisibleToUser) {
            isUIVisible = true;
            lazyLoad();//调用下面的方法
        } else {
            isUIVisible = false;
        }
    }
    
    private void lazyLoad() {
        //这里进行双重标记判断,是因为setUserVisibleHint会多次回调,并且会在onCreateView执行前回调,必须确保onCreateView加载完毕且页面可见,才加载数据
        if (!isLoading && isUIVisible) {
            loadInfo();//加载数据的方法
            //数据加载完毕,恢复标记,防止重复加载
            isLoading = true;
            isUIVisible = false;
        }
    }
    

    以上是我对此功能的一个小记录,大家有更好的方法或者问题可在下方留言。

    相关文章

      网友评论

        本文标题:Android:ViewPager和TabLayout连用时,去

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