ViewPager中切换Fragment二次滑动界面消失问题

使用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;
    }

方案二的方法比较推荐。

你可能感兴趣的:(ViewPager中切换Fragment二次滑动界面消失问题)