困惑于FragmentManager popBackStack的行为

时间:2015-05-28 09:46:01

标签: android android-fragments

我有2个片段,

First Fragment使用FragmentTransaction替换方法显示,它工作正常,然后我想显示Second Fragment并隐藏First Fragment,所以我用

fragmentTransaction.hide(FirstFragment).add(this.containerID, SecondFragment, fragmentTagString);

并观察生命周期,但发现它是有线的,下面的日志是上面的代码

05-28 13:53:44.986: I/Fragment(31490): First Fragment onCreate
05-28 13:53:44.986: I/Fragment(31490): Second Fragment onCreate
05-28 13:53:44.986: I/Fragment(31490): Second Fragment onCreateView
05-28 13:53:44.991: I/Fragment(31490): First Fragment onResume
05-28 13:53:44.991: I/Fragment(31490): Second Fragment onResume

为什么First Fragment在hide()时执行“onCreate”和“onResume”?

然后我按下设备上的按钮,覆盖后退事件

/* Back pressed */
@Override
public void onBackPressed() {
    if (!this.appFragmentController.popFragment()) {
        super.onBackPressed();
    }
}

这些部分是检查fragmentManager.getBackStackEntryCount(),如果> 0,做fragmentManager.popBackStack(),然后我也观察生命周期的日志,我得到了

05-28 13:54:34.076: I/Fragment(31490): First Fragment onPause
05-28 13:54:34.081: I/Fragment(31490): Second Fragment onPause

好的,现在我对生命周期非常困惑,据我所知,当隐藏片段不应该onCreate和onResume时,它应该做“onPause”不是吗?在popBackStack之后它不应该执行onPause,有人可以告诉我它是如何工作的吗?

P.S。 我知道当你使用Fragment B替换Fragment A,然后执行popBackStack()时,它会删除B和Add A,所以当我确实添加了Fragment B并隐藏了片段A,然后执行popBackStack()时,应该删除B和显示A,对吗?

0 个答案:

没有答案