gpt4 book ai didi

android - 从 Android backstack 中删除一个特定的 Fragment

转载 作者:IT老高 更新时间:2023-10-28 23:07:06 27 4
gpt4 key购买 nike

对于 android 平板电脑应用程序,我使用 2 个 fragment 。一个在屏幕左侧,一个在右侧。当您单击右侧 fragment 的按钮时,将在右侧 fragment 的顶部添加另一个 fragment 。这个 fragment 被添加到后台堆栈。

FragmentTransaction ft = getFragmentManager().beginTransaction(); 
ft.add(R.id.fragmentlayout, fragment2);
ft.addToBackStack("Fragment2");
ft.commit();

backstack 现在是:

[ fragment 1] -> [ fragment 2]

左侧还有一个按钮,用于打开左侧 fragment 顶部的 fragment (与 fragment 2相同)并将其添加到后台堆栈。现在的backstack是

[ fragment 1] -> [ fragment 2] -> [ fragment 3]

fragment 2 上是关闭该 fragment 的按钮。

getFragmentManager().popBackStack("Fragment2", FragmentManager.POP_BACK_STACK_INCLUSIVE);

问题是当我只想关闭[fragment 2]时,[fragment 3]也会被销毁。我可以通过调用手动删除 fragment

FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.remove(fragment2).commit();

但是后台会保留

[ fragment 1] -> [(幽灵) fragment 2] -> [ fragment 3]

所以你需要再按一次来关闭应用程序。

有没有办法只从 backstack 中删除 [fragment 2] 并将 [fragment 3] 留在屏幕上?

最佳答案

您可以简单地创建自己的后退堆栈并覆盖 onBackPressed() 并以您认为合适的任何方式处理它。我认为没有其他方法可以实现所需的行为。

您自己的后台堆栈可能只是 fragment 的标签的 ArrayList

关于android - 从 Android backstack 中删除一个特定的 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15664670/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com