片段Z-顺序在方向变化时改变

问题描述:

我的主要xml文件有一个FrameLayout,在XML中定义了一个片段。在运行时,我在此之上添加另一个片段,然后在此之上添加第三个片段。当我添加运行时片段时,我不给containerIds附加它们。这一切都很好,直到方向改变。方向改变后,第三个片段已经在第二个片段下面。但很显然,我希望z-order在方向改变之前保持原样,即添加的最后一个片段应位于顶部并且可见。片段Z-顺序在方向变化时改变

我已经尝试使用containerIds添加片段时,并将它们添加到在XML中定义的FrameLayout,但是当我放入containerIds时,运行时片段根本不会显示出来。

所以我想知道为什么在运行时添加的片段在使用containerId时不显示。是因为它们被添加到一个已经包含片段的容器中吗?我怎样才能解决这个问题?我已经尝试向XML添加额外的容器来容纳运行时片段,但这似乎不起作用。要显示片段的唯一方法是从调用FragmentTransaction.add()中移除containerId。

另外,是否可以手动更改片段的z顺序?我已经搜索了很多谷歌来找出答案,并没有找到任何答案。我试过使用ViewGroup.bringChildToFront()并使用片段的getView()返回的视图,但这没有奏效。我也发现你可以使用getChildFragmentManager()在Android 4.2+上嵌套片段,但是我支持较旧的API,并且此方法似乎不在支持库中。

任何帮助非常感谢!

我解决这个问题的方法是在方向更改后手动重新创建第三个片段,然后删除系统创建的片段。