Android+ViewPaper的多个Fragment不刷新(使用FragmentStatePagerAdapter)

当使用FragmentStateAdapter的ViewPaper时,遇到再次显示的Fragment不刷新的困扰。文章介绍了两种解决方法:一是通过设置ViewPaper的缓存页数;二是利用Fragment的生命周期,在onCreateView之后和onResume之前手动刷新数据。
摘要由CSDN通过智能技术生成

Android的ViewPaper中多个Fragment再次进入之前回收过的Fragment会出现不再刷新的问题

方法一:使用ViewPaper的设置

显式设置缓存页面为3即mViewPager.setOffscreenPageLimit(3)

mViewPager.setAdapter(BaseFragmentStateAdapter(childFragmentManager,mFragmentList,titles))
mViewPager.setOffscreenPageLimit(3)

BaseFragmentStateAdapter继承自FragmentStateAdapter,它会保存Fragment的状态,适用于含有多个Fragment的情况; 而FragmentAdapter适合个数少的Fragment的状态。都只适合固定Fragment顺序都情况,如果是Fragment顺序要变化需要自己改写

方法二

先考虑Fragment的生命周期:

  • 当Fragment在viewPaper中隐去被回收,会调用onDestroyView而不会真正销毁(不会调用onDestroy, onDetach)
  • 再次进入时,只会从onCreateView重新开始(前面的onCreate等不会调用),最后到onResume,然后setUserVisibility为可见true

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值