Android 还原碎片管理器backstack

Android 还原碎片管理器backstack,android,android-fragments,android-orientation,fragmentmanager,fragment-backstack,Android,Android Fragments,Android Orientation,Fragmentmanager,Fragment Backstack,我有不同的纵向和横向布局。我的UI使用堆叠在后堆栈中的片段。在设备旋转时,我需要为横向/纵向设置不同的布局,并恢复片段堆栈(请注意,每个片段的纵向和横向布局也不同)。我需要在编辑文本、选择等中保存数据。 为了使它更容易想象,在肖像画中,我的backbackbackfragmenta->FragmentB->FragmentC中有以下片段。然后我旋转设备,为我的活动加载一个不同的布局,我需要再次恢复FragmentA->FragmentB->FragmentC,但要使用它们的横向视图。如何继续?当

我有不同的纵向和横向布局。我的UI使用堆叠在后堆栈中的片段。在设备旋转时,我需要为横向/纵向设置不同的布局,并恢复片段堆栈(请注意,每个片段的纵向和横向布局也不同)。我需要在编辑文本、选择等中保存数据。

为了使它更容易想象,在肖像画中,我的backbackbackfragmenta->FragmentB->FragmentC中有以下片段。然后我旋转设备,为我的活动加载一个不同的布局,我需要再次恢复FragmentA->FragmentB->FragmentC,但要使用它们的横向视图。如何继续?

当片段被还原时,将再次调用
onCreateView()
,这将为该方向的正确布局充气。换句话说,它应该是有效的。我建议您尝试一下,当您发现恢复片段时出现特定问题,请使用您遇到的问题的确切细节更新此问题。在这种情况下,它不会“正常工作”,因为在我的活动的onCreate()中,我创建了一个新布局,并通过setContentView()进行设置也就是说,创建这些片段的布局框架也发生了变化,这会抹去背景。我解决这个问题的方法是检查
savedInstanceState
是否为空;如果不是,我就不做初始片段事务。然后从保存的状态还原片段。如果我设置活动的内容视图,这会起作用吗?我必须在方向改变时设置该视图,因为布局不同:(我认为这将清除后堆栈,因为根布局中的所有片段都是“活动”的。如果在不同的布局中为片段容器使用相同的id,它应该可以工作。似乎应该清除保存状态,因为您考虑的是视图树,但片段不是视图,而
FragmentManager
负责保存/还原状态。对于我的应用程序,我发现如果我设置了内容视图但没有运行任何片段事务,我的片段将从其上一个状态还原。当片段被还原时,
onCreateView()
再次被调用,这将为该方向膨胀正确的布局。换句话说,它应该可以正常工作。我建议您尝试一下,当您发现恢复碎片时,请使用您遇到的问题的确切细节更新此问题。在这种情况下,它不会“正常工作”,因为在onCreate()中对于我的活动,我创建一个新布局,并通过setContentView()进行设置也就是说,创建这些片段的布局框架也发生了变化,这会抹去背景。我解决这个问题的方法是检查
savedInstanceState
是否为空;如果不是空,我就不做初始片段事务。然后片段从保存状态还原。如果我设置活动?我必须在方向更改时设置该视图,因为布局不同:(我认为这将清除后堆栈,因为根布局中的所有片段都是“活动”的。如果在不同的布局中为片段容器使用相同的id,它应该可以工作。似乎应该清除保存状态,因为您考虑的是视图树,但片段不是视图,而
FragmentManager
负责保存/还原状态。对于我的应用程序,我发现如果我设置了内容视图但没有运行任何片段事务,我的片段都会从上次状态还原。