我有一个FragmentActivity,当用户在应用程序中导航时,我将当前的Fragment替换为用户选择的Fragment,并将事务添加到后退堆栈。一切都很好,用户可以通过按返回按钮返回到先前的Fragment。
问题出现在设备方向改变时:假设用户看到的第一个Fragment是A,然后他导航到B,再从B到C。C内部的内容在横向模式下更容易欣赏,并且C有一个特殊的横向布局,因此用户旋转设备。我期望用户以新方向处于C状态。但实际上,用户在横向模式下看到的是A。现在他需要重新导航从A到B然后到C,才能以横向模式看到C。
我希望在方向更改后保留后退堆栈。
如果我在清单文件中使用
显然,我做错了什么,因为在此页面中,有一种解释说:
我在SO上看到了一些类似的问题,但迄今为止都没有帮助我解决这个问题。任何帮助将不胜感激。
问题出现在设备方向改变时:假设用户看到的第一个Fragment是A,然后他导航到B,再从B到C。C内部的内容在横向模式下更容易欣赏,并且C有一个特殊的横向布局,因此用户旋转设备。我期望用户以新方向处于C状态。但实际上,用户在横向模式下看到的是A。现在他需要重新导航从A到B然后到C,才能以横向模式看到C。
我希望在方向更改后保留后退堆栈。
如果我在清单文件中使用
configChange="orientation"
,则后退堆栈将被保留,但由于Fragment未重新创建,它无法加载新方向的正确布局。我想我可以使用一些难看的技巧来强制重新创建Fragment,但我认为应该有更好的解决方案来实现如此简单的事情。显然,我做错了什么,因为在此页面中,有一种解释说:
听起来像是我期望的行为,但这在我的应用程序中没有发生。我错过了什么吗? 如何实现这种行为?-> Fragment Manager在两个Fragment上都调用onSaveInstanceState()。
-> Activity和两个Fragments被销毁。
-> 创建Activity的新实例。
-> 使用新的Fragment实例重新创建后退堆栈。
我在SO上看到了一些类似的问题,但迄今为止都没有帮助我解决这个问题。任何帮助将不胜感激。