Android中如何判断Fragment是否对用户可见
Fragment 在 Activity、ViewPager 中都会使用到,不同场景判断方法略有不同。
1,Activity 中的 Fragment
这种情况是最简单的。Activity中Fragment的生命周期是和Activity的生命周期一致的,当打开另外一个Activity的时候,只要监听Fragment的onResume和onPause方法就能够判断其显隐(如果Activity需要从一个Fragment切换到另外一个Frament,参考方法3)
@Override
public void onResume() {
super.onResume();
}
@Override
public void onPause() {
super.onPause();
}
2,ViewPager 中的 Fragment
ViewPager中Fragment左右切换时,是不会调用onResume()和onPause()方法的。这两个方法是跟随Activity的生命周期的,这个时候我们可以在 Fragment 中重写 setUserVisibleHint(boolean isVisibleToUser) 方法来监听Fragment是否可见。
@Override
public voidsetUserVisibleHint(booleanisVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser){
//可见
}else{
//不可见
}
}
3,使用show()和hide()方法来显示隐藏Fragment
当在一个 Activity 中从一个 Fragment 切换成另外一个 Fragment,上面两种方法会失效,此时我们可以通过监听 onHiddenChanged(boolean hidden) 方法来判断是否对用户可见。
@Override
public void onHiddenChanged(booleanhidden) {
super.onHiddenChanged(hidden);
if(hidden){
//不可见
}else{
//可见
}
}
我的笔记