我有一个活动,该活动在RelativeLayout的开头运行片段A,
之后,在此片段内,我尝试打开另一个片段B,该片段仅以某种方式覆盖,它在另一个RelativeLayout中运行,以查看片段A上方,到目前为止,一切正常,但问题出在onBackPressed():
我打开覆盖片段B,然后按返回按钮,但它仅关闭片段A。
这是我的活动的xml
<RelativeLayout
android:id="@+id/main_fragment_replacement"
android:layout_width="match_parent"
android:layout_height="match_parent">
</RelativeLayout>
<RelativeLayout
android:background="#0000"
android:id="@+id/overlay_fragment_replacement"
android:layout_width="match_parent"
android:layout_height="match_parent">
我认为这应该可以解释这一点,但是我愿意提供任何其他信息。
答案 0 :(得分:1)
您可以使用标签。在打开片段B之前,将标签设置为等于“ a”。 重写onBackPressed()方法并检查标记的值。如果它等于“ a”,则打开片段a。如果它等于“ b”,则打开片段b。
答案 1 :(得分:1)
添加片段时,您可以将它们添加到您的堆栈中。
getSupportManager()
.beginTransaction()
.replace(R.id.container, fragment)
.addToBackStack(null)
.commit();
然后,您可以简单地检查多少片段,并删除例如 2 时的B片段,而后堆栈包含两个片段。
答案 2 :(得分:0)
在android documentation for Fragments中提到了此过程。
如果在执行删除片段的事务时未调用addToBackStack(),则在提交事务时该片段将被销毁,并且用户无法导航回该片段。而如果您在删除片段时确实调用addToBackStack(),则该片段将停止,并且如果用户向后导航,该片段将在以后恢复。