调用 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() { }