【Android】如何判断一个fragment是否显示
16lz
2021-01-23
总结一下,分为两种情况
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 onAttach12-18 20:23:58.296 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onDetach12-18 20:24:06.513 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onAttach12-18 20:24:08.375 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onHiddenChanged hidden = true12-18 20:24:13.028 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onHiddenChanged hidden = false12-18 20:24:17.594 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onHiddenChanged hidden = true12-18 20:24:19.505 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onHiddenChanged hidden = false12-18 20:24:24.668 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onHiddenChanged hidden = true12-18 20:24:26.132 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onHiddenChanged hidden = false12-18 20:24:27.473 24014-24014/com.comic.comicmo D/ComicMeo: │ com.comic.comicmo.online.ui.main.mine.MineFragment visible onHiddenChanged hidden = true12-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如下所示
更多相关文章
- Android屏蔽EditText软键盘的方法
- Android获取屏幕尺寸的方法
- Android实现完整游戏循环的方法
- Android踩坑——mkdir方法中返回false导致新建文件失败
- Android启动外部应用的方法
- Frame-By-Frame Animations的使用方法
- android中获取context的多种方法的区别(this,getbasecontext(),ge
- Android中去掉ActionBar的几种方法
- 重写对话框dialog