本文主要是介绍TabLayout+ViewPager+Fragment中Fragment的可见和不可见问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
场景
TabLayout+ViewPager+Fragment的使用过程中需要判断Fragment是否对用户可见,监听Fragment由不可见变为可见的事件
解决方案
重写Fragment的setUserVisibleHint(boolean isVisibleToUser)方法
坑
由于ViewPager有预加载,所以在切换时,每个预加载完的Fragment都会执行setUserVisibleHint方法,所以加一个状态标识,来确定发生变化的Fragment
代码
boolean isVisibleToUserInFrag;@Override
public void setUserVisibleHint(boolean isVisibleToUser) {super.setUserVisibleHint(isVisibleToUser);if (isVisibleToUserInFrag != isVisibleToUser) {if (isVisibleToUser) {Logger.d(TAG, "fragment变可见 = " + titleIndex);//fragment由不可见变为可见//TODO 处理一些事件} else {Logger.d(TAG, "fragment变不可见 = " + titleIndex);//fragment由可见变为不可见//TODO 处理一些事件}isVisibleToUserInFrag = isVisibleToUser;}
}
注意
1、setUserVisibleHint生效需要使用FragmentPagerAdapter
2、setUserVisibleHint方法的生命周期优先于onCreate
这篇关于TabLayout+ViewPager+Fragment中Fragment的可见和不可见问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!