我在ViewPager中使用了4个片段,因为ViewPager预先加载了上一个和下一个片段,并且在片段之间导航时没有调用生命周期方法。 那么有什么方法可以检测片段实际可见的时间。 在此先感谢。
答案 0 :(得分:6)
由于@Matt的答案setUserVisibleHint
已被弃用,因此这是替代方法。
@Override
public void setMenuVisibility(boolean isvisible) {
super.setMenuVisibility(isvisible);
if (isvisible){
Log.d("Viewpager", "fragment is visible ");
}else {
Log.d("Viewpager", "fragment is not visible ");
}
}
答案 1 :(得分:1)
当然。假设viewPager
是ViewPager
的实例,请使用:viewPager.getCurrentItem()
。
在Fragment
中,您可以检查用户是否可以看到其实例,如下所示:
@Override
public void setUserVisibleHint(boolean visible) {
super.setUserVisibleHint(visible);
if (visible) {
Log.i("Tag", "Reload fragment");
}
}
在提出问题之前,请务必确保完全搜索答案。例如,您应该检查的第一个地方是:https://developer.android.com/reference/android/support/v4/view/ViewPager.html
答案 2 :(得分:0)
您可以使用viewPager.getCurrrentItem()来获取当前选定的索引,然后您应该可以推断显示哪个片段。但是,您可能希望使用addOnPageChangeListener()添加OnPageChangeListener。这将让您跟踪选择的页面,因为它是通过实施onPageSelected(int selected)方法选择的。
答案 3 :(得分:0)
你是否尝试过片段中的isVisible方法?