ViewPager取消Fragment的预加载使用setUserVisibleHint()方法;
但是如果ViewPager加载第一个Fragment的时候,获取实例化的控件、或者系统控件会报null指针异常,大概是因为当前页面没有绘制完成。因此要判断下。
public RecyclerView recycleview; @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); isShowView = isVisibleToUser; if (isVisibleToUser) { if (recycleview == null) {//recycleview需要在onViewCreate实例化;当为空的时候说明页面绘制未完成,用onResume()调用数据 isShowView = isVisibleToUser; } else { isShowView = false; initData();//加载数据方法public boolean isShowView;//是否已可见视图
} } } @Override public void onResume() { super.onResume(); if (isShowView) { initData();//加载数据方法 } }