这是在activity中fragment切换 只能是使用hide show 方法解决数据刷新问题
//在fragment页面中直接重写
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (!hidden) {
// 在这里写刷新的需求
// Toast.makeText(getActivity(), "刷新了---显示", Toast.LENGTH_SHORT).show();
}else {
// 这里可写可不写
// Toast.makeText(getActivity(), "刷新了---隐藏", Toast.LENGTH_SHORT).show();
}
}
当fragment结合viewpager使用时 下面的方法会调用,而上面的方法不会调用?
//setUserVisibleHint是在onCreateView之前调用的
public abstract class BaseLazyLoadFragment extends Fragment {
//是否是第一次加载数据
protected boolean mIsFirstGetData = true;
//fragment对用户是否可见
protected boolean mIsVisibleToUser;
//根布局
protected View mRootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//只有为空的时候加载布局,
// 因为在viewpager中fragment对象不会被销毁,成员变量也不会销毁
if (mRootView == null) {
mRootView = inflater.inflate(provideLayoutId(), container, false);
initView();
}
return mRootView;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//懒加载数据
lazyLoadData();
}
//fragment是否需要实时刷新,如果需要返回true,不需要返回false
protected abstract boolean setIsRealTimeRefresh();
protected abstract void initData();
protected abstract void initView();
protected abstract int provideLayoutId();
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(mIsVisibleToUser);
//设置可视状态
mIsVisibleToUser = isVisibleToUser;
//懒加载数据
lazyLoadData();
}
public void lazyLoadData() {
if ((mIsFirstGetData || setIsRealTimeRefresh()) && mIsVisibleToUser && mRootView != null) {
mIsFirstGetData = false;
Log.e("TAG", "initData");
initData();
}
}
}
3578

被折叠的 条评论
为什么被折叠?



