使用ViewPager+Fragment进行界面切换,当界面数量大于等于3时,出现两次滑动后的界面会消失。
产生的原因:
onCreateView被调用了多次,导致给fragment添加多次View。
解决方案
方案一:
在viewPager中调用
// “2” 表示缓存当前界面每一侧的界面数
viewPager.setOffscreenPageLimit(2);
为了避免Fragment的数据被销毁,增加ViewPager的缓存数量,以避免 Fragment被销毁。
注意:此方法适用于界面固定,fragment数量较少使用。
方案二:
复用Fragment的RootView
private View mRootView;
@Override
public void onDestroyView(){
supe.onDestroyView();
//移除mRootView,防止添加多个View
if(null != mRootView){
((ViewGroup)mRootView.getParent()).removeView(mRootView);
}
}
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle bundle){
//若mRootView为null,则初始化view。否则复用mRootView
if(null == mRootView){
mRootView = inflater.inflater(...);
}
return mRootView;
}
方案二的方法比较推荐。