如何知道片段在viewpager中实际可见的时间

时间:2018-02-20 19:41:13

标签: android android-viewpager fragment

我在ViewPager中使用了4个片段,因为ViewPager预先加载了上一个和下一个片段,并且在片段之间导航时没有调用生命周期方法。 那么有什么方法可以检测片段实际可见的时间。 在此先感谢。

4 个答案:

答案 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)

当然。假设viewPagerViewPager的实例,请使用: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方法?