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不可见 } }
相关文章推荐
- 调用RadioGroup的check(id)方法,监听onCheckedChanged方法被执行多次;调用clearCheck(),onCheckedChanged方法仍被执行的原因和解决办法
- fragment 状态保存时怎么执行一些需要在onResume、onPause方法里面运行的东西
- RadioGroup调用check(id)方法时,onCheckedChanged方法被执行多次解决办法
- getSupportFragmentManager()方法不可用解决办法和原因
- 调用RadioGroup的check(id)方法,监听onCheckedChanged方法被执行多次;调用clearCheck(),onCheckedChanged方法仍被执行的解决办法
- 执行java.io.ByteArrayOutputStream.write 方法内存突然加大的原因与解决办法
- fragment里面嵌套tab(tab里 3ff8 面有多个fragment),onActivityResult不执行解决办法
- 执行java.io.ByteArrayOutputStream.write 方法内存突然加大的原因与解决办法
- Android Fragment onActivityResult不执行解决办法
- Android Fragment onActivityResult不执行解决办法
- RadioGroup调用setcheck(bool)方法时,onCheckedChanged方法被执行多次解决办法
- 解决onActivityResult方法不执行的办法
- Fragment与宿主Activity都调用startActivityForResult,onActivityResult不执行解决办法
- Activity did not call finish() prior to onResume() completing原因和解决办法
- RadioGroup调用check(id)方法时,onCheckedChanged方法被执行多次调用解决办法
- RadioGroup调用check(id)方法时,onCheckedChanged方法被执行多次解决办法
- 解决onActivityResult方法不执行的办法
- 解决onActivityResult方法不执行的办法
- android RadioGroup调用check(id)方法时,onCheckedChanged方法被执行多次解决办法
- Android 关于activity嵌套fragment的时候onactivityresult方法不执行的总结