瞭解Fragment的onResume和onPause方法
Fragment裏的onResume和onPause方法其實是Activity的方法,所以有時候切換到當前Fragment時並不會調用onResume。
要實現與onResume和onPause一樣的效果,可以這樣寫
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
// 因爲setUserVisibleHint方法在onViewCreate之前調用,所以會存在getActivity()==null的情況
if (getActivity() != null) {
if (isVisibleToUser) {
// 相當於Fragment的onResume
httpGetUserInfo();
} else {
// 相當於Fragment的onPause
}
}
}
而且FragmentPagerAdapter裏切換fragment的時候,如果fragment存在,則設置setUserVisibleHint和setMenuVisibility來顯示,因此也不會走fragment的onDestroyView方法。
以下是FragmentPagerAdapter源碼裏的方法
@Override
public Object instantiateItem(ViewGroup container, int position) {
// 此處代碼省略...
if (fragment != mCurrentPrimaryItem) {
fragment.setMenuVisibility(false);
fragment.setUserVisibleHint(false);
}
// 此處代碼省略...
return fragment;
}