android Fragment 的可见性判断

很多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();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容