您的位置:首页 > 其它

Fragment的OnResume()方法不执行原因及解决办法

2017-10-12 14:26 337 查看

前因后果:

Fragment依托于Activity,其内部的OnResume和OnPause方法真正归属于其依托的Activity,在Activity可见性变化的时候,才会调用这两个方法;如果在Activity中包含一个ViewPager + 多个Fragment的结构,在Fragment的切换过程中,因为Activity一直显示,所以Fragment切换是不会调用OnResume和OnPause方法的,当然第一次创建Fragment的时候是会调用的。
那么问题来了,我们想要在子Fragment对用户可见性变化时处理一些逻辑,该怎么办呢?
当然是有办法的!


解决之道:

Fragment中有setUserVisibleHint这个方法,其效果和Activity的OnResume和OnPause方法一样,那么我们看下他的使用方法。


@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
//相当于Fragment的onResume,为true时,Fragment已经可见
} else {
//相当于Fragment的onPause,为false时,Fragment不可见
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐