fragment setUserVisibleHint onHiddenChanged方法
调用 hide show 方法是,下面的方法会调用
if (currentFragment != to) { currentFragment = to; FragmentTransaction transaction = mFragmentMang.beginTransaction(); // FragmentTransaction transaction = getSupportFragmentManager().beginTransaction().setCustomAnimations( // android.R.anim.fade_in, R.anim.slide_out); if (!to.isAdded()) { // 先判断是否被add过 UtilsLog.d(); transaction.hide(from).add(R.id.fragment_container, to, fragmentag).commitAllowingStateLoss(); // 隐藏当前的fragment,add下一个到Activity中 } else { UtilsLog.d(); transaction.hide(from).show(to).commitAllowingStateLoss(); // 隐藏当前的fragment,显示下一个 } }
/**
* fragment hide or show
* true means hide else false
*/
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
}
当fragment结合viewpager使用时 下面的方法会调用,而上面的方法不会调用?
/** Fragment当前状态是否可见 */
protected boolean mCurFragmentisVisible = false;
//setUserVisibleHint是在onCreateView之前调用的
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (getUserVisibleHint()) {
mCurFragmentisVisible = true;
onFragmentVisible();
} else {
mCurFragmentisVisible = false;
onFragmentInvisible();
}
}
/**
* Fragment可见
*/
protected void onFragmentVisible() {
onLazyLoad();
}
/**
* Fragment不可见
*/
protected void onFragmentInvisible() {
}
