我的主要xml文件有一个FrameLayout,在XML中定义了一个片段。在运行时,我将在此基础上添加另一个片段,然后在此之上添加第三个片段。当我添加运行时片段时,我不给containerIds将它们附加到。在方向改变之前,这一切都很好。在方向改变之后,第三个片段已经在第二个片段之下。但显然我希望z-order保持在方向改变之前的状态,即添加的最后一个片段应该在顶部并且可见。
我在添加片段时尝试使用containerIds,并将它们添加到XML中定义的FrameLayout中,但是当我放入containerId时,运行时片段根本就不显示。
所以我想知道为什么在运行时添加的片段在我使用containerId时没有显示。是因为它们被添加到已经包含片段(在XML中定义的片段)的容器中?我怎么能绕过这个?我已经尝试在XML中添加其他容器来保存运行时片段,但这似乎不起作用。获取片段的唯一方法是从FragmentTransaction.add()的调用中删除containerId。
另外,是否可以手动更改片段的z顺序?我已经搜索了很多Google来找到它并且没有找到任何答案。我已经尝试使用ViewGroup.bringChildToFront()并使用片段的getView()返回的视图,但这没有用。我还发现你可以使用getChildFragmentManager()在Android 4.2+上嵌套片段,但我支持较旧的API,而且这种方法似乎不在支持库中。
任何帮助都非常感谢!
答案 0 :(得分:1)
我解决这个问题的方法是在方向更改后手动重新创建第三个片段,然后删除系统创建的片段。