简单总结:
如果你还在坚持使用Android.Support包而拒绝拥抱AndroidX的话,那么可以参考下随处可见的文章:在ViewPager中判断Frament是否显示状态
如果你使用的是AndroidX的话,那么情形可能就不一样了。不多赘述直接上答案:
=======》》
public FragmentPagerAdapter(@NonNull FragmentManager fm,@Behavior int behavior) {
mFragmentManager = fm;
mBehavior = behavior;
}
@Retention(RetentionPolicy.SOURCE)
@IntDef({BEHAVIOR_SET_USER_VISIBLE_HINT, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT})
private @interface Behavior { }
关注上面的behavior传参,
如果你用的是BEHAVIOR_SET_USER_VISIBLE_HINT,那么你还是和上述提供的方式解决这个问题就好了,
如果你用的是BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT,那么就更简单了,此时的Fragment拥有正确的生命周期(简单的说就是和Activity一样,在可见时才调用onResume,在不可见时才调用onPause),所以此时可以愉快的进行代码书写了啦!
ps:据说谷歌正在着手解决ViewPager中Fragment多栈的问题,本人目前的解决方案是自定义一个Fragment,每个ViewPager的子页面就是个一个这个自定义对象,从而持有了多个childFragmentManager。代码有点丑就不多赘述了。