总结一下,分为两种情况
1.在viewpager中添加的fragment
//判断是否正在显示
protected boolean isVisible;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser){
isVisible = true;
}else{
isVisible = false;
}
}
重写fragment的setUserVisibleHint方法即可,通过 isVisibleToUser参数来判断是否显示
2.通过Hide or Show 方法设置的fragment
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if (currentFragment != null) {
transaction.hide(currentFragment);
}
if (!fragment.isAdded()) {
transaction.add(R.id.main_container, fragment);
}
transaction.show(fragment);
transaction.commitAllowingStateLoss();
重写这三个方法,当fragment初始化时候,调用了onAttach方法,之后通过onHiddenChanged方法来判断是否隐藏
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
XLog.d(getClass().getName() + " visible onAttach");
}
@Override
public void onDetach() {
super.onDetach();
XLog.d(getClass().getName() + " visible onDetach");
}
@Override
public void onHiddenChanged(boolean hidden) {
XLog.d(getClass().getName() + " visible onHiddenChanged hidden = "+ hidden);
super.onHiddenChanged(hidden);
}
12-18 20:23:44.389 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onAttach
12-18 20:23:58.296 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onDetach
12-18 20:24:06.513 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onAttach
12-18 20:24:08.375 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onHiddenChanged hidden = true
12-18 20:24:13.028 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onHiddenChanged hidden = false
12-18 20:24:17.594 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onHiddenChanged hidden = true
12-18 20:24:19.505 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onHiddenChanged hidden = false
12-18 20:24:24.668 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onHiddenChanged hidden = true
12-18 20:24:26.132 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onHiddenChanged hidden = false
12-18 20:24:27.473 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onHiddenChanged hidden = true
12-18 20:24:27.943 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onHiddenChanged hidden = false
打印的LOG如下所示