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
所