对于 android 平板电脑应用程序,我使用 2 个片段。一个在屏幕左侧,一个在右侧。当您单击右侧片段的按钮时,将在右侧片段的顶部添加另一个片段。这个片段被添加到后台堆栈。
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.fragmentlayout, fragment2);
ft.addToBackStack("Fragment2");
ft.commit();
后台现在是:
[片段 1] -> [片段 2]
左侧还有一个按钮,用于打开左侧片段顶部的片段(与 fragment2 相同)并将其添加到 backstack。后台是现在
[片段 1] -> [片段 2] -> [片段 3]
在片段 2 上是一个关闭该片段的按钮。
getFragmentManager().popBackStack("Fragment2", FragmentManager.POP_BACK_STACK_INCLUSIVE);
问题是当我只想关闭[fragment 2]时,[fragment 3]也会被销毁。我可以通过调用手动删除片段
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.remove(fragment2).commit();
但后堆将保留
[片段 1] -> [(幽灵)片段 2] -> [片段 3]
因此,您需要再按一次以关闭应用程序。
有没有办法只从后台删除 [fragment 2] 并将 [fragment 3] 留在屏幕上?