检测片段变为可见时的真实答案

时间:2017-12-14 05:37:08

标签: android android-fragments

如何检测片段何时变得可见,我搜索了这个问题并得到了很多答案。

1。使用setUserVisibleHint():此方法不会一直调用,也不会自动调用。例如我创建了这段代码

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setUserVisibleHint(false);
}

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    if (isResumed()){
        if (isVisibleToUser){//fragment visible
            load();
        }else{
            //content.listener.stop();
        }
    }
}

不会为viewPager中的第一个项调用此方法。这意味着这不能真正发挥作用。

2。使用onHiddenChanged():这个答案是真的,但现在它没有用。我在片段中检查了这段代码。但这有时不会引用。

@Override
public void onHiddenChanged(boolean hidden) {
    super.onHiddenChanged(hidden);
    Log.e(TAG , "   "+hidden);
}

3。像view setOnPageChangeListener这样在viewPager中进行分页的一些想法:注意,我希望片段中的所有时间都能得到真正的答案。不只是对于viewPager或其他视图

我在这些链接中得到答案anad ...:

How to determine when Fragment becomes visible in ViewPager

Detect when fragment becomes visible [duplicate]

任何人都可以通过真实答案帮助我吗?

1 个答案:

答案 0 :(得分:0)

我使用setUserVisibleHint,它完全适合我。我想你忘了在setUserVisibleHint函数中给出 super.setUserVisibleHint(isVisibleToUser);

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
        //When fragment is visible
    }
}

希望这对你有所帮助 感谢