fragment setUserVisibleHint onHiddenChanged方法

来源:互联网 发布:linux informix客户端 编辑:程序博客网 时间:2024/06/04 01:26



调用 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 */@Overridepublic void onHiddenChanged(boolean hidden) {    super.onHiddenChanged(hidden);}

当fragment结合viewpager使用时 下面的方法会调用,而上面的方法不会调用?

/** Fragment当前状态是否可见 */protected boolean mCurFragmentisVisible = false;//setUserVisibleHint是在onCreateView之前调用的@Overridepublic 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() {}

















0 0