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

方案二的方法比较推荐。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容