提供两种方法:
第一种:setUserVisibleHint
这一种的使用方法比较特殊
注释:setUserVisibleHint每次fragment显示与隐藏都会调用,他的调用顺序由于onCreate,所以需要一些常量进行判断
private boolean mHasLoadedOnce = false;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
if (this.isVisible()) {
// we check that the fragment is becoming visible
if (isVisibleToUser && !mHasLoadedOnce && mArrayList==null) {
// async http request here
mHasLoadedOnce = true;
}
}
super.setUserVisibleHint(isVisibleToUser);
}
由于setUserVisibleHint优于onCreate调用,所以当onCreate调用完毕setUserVisibleHint就不会触发,这时需要在首个显示的fragment调用setUserVisibleHint方法
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
setUserVisibleHint(true);
super.onActivityCreated(savedInstanceState);
}
第二种:onHiddenChanged
当FragmentTranscation调用了hide(Fragment mFragment)以后会回调OnHidden(boolean isHidden)方法
这个方法相对更加简单