很多app现在都用了Fragment,就是下面这种形式
有时候需要判断当前的Fragmt是否可见(对于用户),影响Fragment可见性的有两大因素:
1.当前Fragment是否被选中(上图中的第一个,蓝色选中状态)
2.包含Fragment的Activity是否在最顶层(是否上面覆盖了一层Activity)isResumed
那么影响Fragment对于用户是否可见的 就只有三个方法了
Fragment中的onResume() onPause() setUserVisibleHint()
如果Fragment是放在ViewPager里面的Fragment的setUserVisibleHint()方法会在 切换Fragment时自动执行,FragmentUserVisibleHint值 随着切换Fragment而改变;只需要再有当前Fragment是已经onResume,还是已经onPause的标记既可以了。
经验证 Fragment.isResumed()可以正确返回当前 Fragment 的状态;
所以判断Fragment 的可见性,可以用 getUserVisibleHint()&&isResumed(),如:
Boolean isVisibleToUser=MyFragment.this.isResumed()&&MyFragment.this.getUserVisibleHint();