美文网首页
Android ViewPager和TabLayout连用时,去

Android ViewPager和TabLayout连用时,去

作者: BBNO | 来源:发表于2019-12-24 14:35 被阅读0次

    ViewPager和TabLayout连用时,如何去除ViewPager预加载?
    最主要的就是用到这个方法:setUserVisibleHint(boolean isVisibleToUser)

    在Fragment中添加如下代码:

    //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/pmffoctx.html