在实际项目开发中有时候我们不想用到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() { }