Fragment预加载+数据初始化

来源:互联网 发布:java中线程之间的通信 编辑:程序博客网 时间:2024/04/30 07:48

           在实际项目开发中有时候我们不想用到ViewPager+Fragment的预加载,那么我们就需要在Fragment可见的时候才去加载数据。定义一个BaseFragment,重写setUserVisibleHint(boolean isVisibleToUser)这个方法。setUserVisibleHint这个方法会在onCreated()之前多次调用。

当在加载数据时需要拿到Activity实例化Fragment传进来的数据时,可以通过getArguments();注意:必须通过静态方法的方式返回Fragment实例。
   public static BaseFragment newInstance(String msg) {      Bundle args = new Bundle();      args.putString("msg",msg);      BaseFragment fragment = new BaseFragment();      fragment.setArguments(args);      return fragment;  }

     @Override     public void setUserVisibleHint(boolean isVisibleToUser) {         if (isVisibleToUser){             isVisible = true;             onVisible();         }else {             isVisible = false;             onInVisible();         }         super.setUserVisibleHint(isVisibleToUser);     }
     protected void onInVisible() {        //加载数据        if (isVisible && data==null){            Bundle args = getArguments();            msg = args.getString("msg");            loadData(msg);       }    }
protected void onVisible() { }

0 0