177fd2ee0a0c

很多app现在都用了Fragment,就是下面这种形式

177fd2ee0a0c

有时候需要判断当前的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();

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐