我有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,对吗?