Fragment 懒加载

万能的Tablayout+Viewpager+Frgment 做Viewapger的缓存。

Tablayout+Viewpager+Frgment 做Viewapger的缓存,并且第一次点击tab都去刷新,但是第二次之后都有缓存且不会自动刷新可以主动刷新。

需要实现这个首先你需要了解fragment的一个方法

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);

}

fragment的这个方法不在fragment的生命周期里面,当你让这个fragment显示的时候为true就会自动调用这个方法。

意思就是当我们点击tab按钮的时候,fragment就会去自动调用这个方法,那么我们是不是直接在这个方法里面做fragment的刷新就可以了呢?答案是不行的。

为什么?因为这个方法会在onCreateVIew之前调用,那么就代表了你获取到网路数据的时候去更新Ui就会报错,因为你的

 

SwipeRefreshLayout或者RecycelrView没有调用findById,没有绑定控件,那么我们就需要在第一个framgne单独提出来,其他之后的所有fragmnet都用一个fragment,因为只有第一个framgent才会出现先执行setUserVisibleHint,后执行OnCreateView方法​

需要实现主要与以下几个重要条件:

1、viewPager.setOffscreenPageLimit(list_fragment.size()-1);//缓存所有fragment

2、

/**
 * 当这个fragment显示的时候就去刷新,就是当你点击tab的时候并且是第一次点击就去刷新
 *
 * @param isVisibleToUser
 */
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    Log.e("isVisibleToUser", isVisibleToUser + "");
    if (isVisibleToUser && list == null) {//这个页面是显示的,并且list==null表示第一次创建的时候才去刷新,第二次打开这个//fragment  list就不=null了
        swipeRefresh.setRefreshing(true);
        onRefresh();
    }
}

 

内置apk文件可安装

遇到问题可以加我qq:659966631

项目下载连接:https://download.csdn.net/download/fayangzhou/10670186

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值