使用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;
}
方案二的方法比較推薦。