【发布时间】:2016-03-02 20:28:02
【问题描述】:
我有一个活动,ActivityA,和 3 个片段,FragmentA、FragmentB 和 FragmentC。
要添加 FragmentA,我使用replace,其中fragment 是FragmentA 的新实例:
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frame_layout_fragment, fragment)
.commit();
在ActivityA的onCreate方法中,我检查FragmentA的创建:
if (savedInstanceState == null) {
FragmentA fragmentA = FragmentA.newInstance();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frame_layout_fragment, fragmentA)
.commit();
}
要添加FragmentB 和FragmentC,我使用add 和addToBackStack,其中fragment 是FragmentB 或FragmentC 的新实例:
getSupportFragmentManager()
.beginTransaction()
.add(R.id.frame_layout_fragment, fragment)
.addToBackStack(null)
.commit();
我在FragmentC 上按下后退按钮,它显示FragmentB,在FragmentB 上按下后退按钮显示FragmentA,正如预期的那样。当我在FragmentC 上时,我旋转了设备,FragmentC 仍然按预期显示。
但是,当我使用 2 次后退按钮从 FragmentC 导航到 FragmentA 时,然后旋转设备两次,纵向 -> 横向 -> 纵向,添加 FragmentB,添加 FragmentC,然后我旋转设备一次,我希望 FragmentC 显示,但 FragmentB 显示。当我按一次后退按钮时,什么也没有发生。当我再次按下它时,它会导航回FragmentA。似乎FragmentC 出现在后台堆栈中,但由于某种原因它不可见。
为什么FragmentC 在这种情况下不可见?
【问题讨论】:
-
有人解决了这个问题吗?
标签: android android-fragments screen-rotation