如何检测片段何时变得可见,我搜索了这个问题并得到了很多答案。
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]
任何人都可以通过真实答案帮助我吗?
答案 0 :(得分:0)
我使用setUserVisibleHint,它完全适合我。我想你忘了在setUserVisibleHint函数中给出 super.setUserVisibleHint(isVisibleToUser); 。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
//When fragment is visible
}
}
希望这对你有所帮助 感谢