提供兩種方法:
第一種:setUserVisibleHint
這一種的使用方法比較特殊
注釋:setUserVisibleHint每次fragment顯示與隱藏都會調(diào)用规脸,他的調(diào)用順序由于onCreate杠愧,所以需要一些常量進(jìn)行判斷
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優(yōu)于onCreate調(diào)用遮糖,所以當(dāng)onCreate調(diào)用完畢setUserVisibleHint就不會觸發(fā)懈糯,這時(shí)需要在首個(gè)顯示的fragment調(diào)用setUserVisibleHint方法
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
setUserVisibleHint(true);
super.onActivityCreated(savedInstanceState);
}
第二種:onHiddenChanged
當(dāng)FragmentTranscation調(diào)用了hide(Fragment mFragment)以后會回調(diào)OnHidden(boolean isHidden)方法
這個(gè)方法相對更加簡單