美文网首页
ViewPager中Fragment避免重复调用onCreate

ViewPager中Fragment避免重复调用onCreate

作者: 我打过猴 | 来源:发表于2018-08-11 18:25 被阅读0次

    写在前面:
    ViewPager是android很常用的滑动组件,初次使用难免会遇到一些小的问题。在次记录两条:(1)来回滑动时候onCreateView方法会重复调用,这样第一次加载出来的一些数据会出现丢失,View也会重复的进行初试化。
    (2)一个ViewPaget嵌入多个Fragment,如果不做特殊处理,那么所有fragment在创建时候都会进行数据的加载,这样很可能会造成卡顿。

    一、避免重复调用onCreateView()方法:

     private View mRootView;
    
       @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            if (mRootView!=null) {  // mRootView 不为null时候,返回之间创建的mRootView,不会再进行初始化操作了
                return mRootView;
            }
            mRootView= LayoutInflater.from(getActivity()).inflate(R.layout.fragment_foodaddfridge,null);
            return mRootView;
        }
    
    

    二、设置嵌入Fragment可见时候加载数据

     private  int isVisibleCount;  // 每个ViewPager中的Fragment维护一个标记状态位
    // setUserVisibleHint() 是Fragment的重写方法,isVisibleToUser 是否可见
      @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);
            if (isVisibleToUser&&isVisibleCount==0){
                getFoodByCategory();     // 当可见并且没有加载过数据时候,进行数据加载
            }
        }
    
    

    相关文章

      网友评论

          本文标题:ViewPager中Fragment避免重复调用onCreate

          本文链接:https://www.haomeiwen.com/subject/mtgdbftx.html