当前位置: 首页 > 知识库问答 >
问题:

从堆栈中弹出特定片段并删除其他片段

花永昌
2023-03-14

如何从堆栈中弹出特定片段,并从片段中删除其他片段?例如,这些是我的片段,我现在在E right know。

A-

想从E回到B,清除C和D。我怎么能做到这一点?

共有3个答案

沈宇定
2023-03-14

如果您使用的是AndroidX导航,则可以使用以下功能:

findNavController().popBackStack(R.id.FragmentB, false)
任伟
2023-03-14

当您在片段E中时,可以调用下面的函数:

getFragmentManager().popBackStack("tag", 0);

这里的标签是在将片段B添加到backack时作为标签传递的字符串。

柯乐童
2023-03-14

您可以为每个片段添加一个标签,同时将它们添加到背包,然后从背包中弹出片段,直到没有到达带有您想要的标签的片段。

FragmentManager fm = getFragmentManager();

for (int i = fm.getBackStackEntryCount() - 1; i > 0; i--) {
    if (!fm.getBackStackEntryAt(i).getName().equalsIgnoreCase(tagname)) {
        fm.popBackStack();
    }
    else
    {
     break;
    }
}
 类似资料:
  • 当我创建时,我需要从另一个活动中删除一个片段,而不是创建它的活动: 然后我可以从片段中访问另一个活动,假设片段中有一个按钮可以打开另一个活动,现在,停留在该活动中我想删除启动该活动的片段,我得到该片段的参考号通过意图。所以我尝试: 但它给了我一个nullPointerException, 03-07 22:42:33.270 30993-30993/河马。rggmiranda。hiposleep

  • 问题内容: 我有活动: 在此容器内,取决于所按下的按钮是FragmentA还是FragmentB。这些片段是嵌套子片段的 容器 。即,每个片段中都包含自己的导航堆栈。 在活动的onCreate中,我将实例化这两个片段: 然后,我继续互相替换: 到目前为止,一切都很好。但 问题: 每次我用fragmentB替换fragmentA时(反之亦然) -getChildFragmentManager() 破

  • 我有一个,它创建一个,然后这个创建另一个: 这让我想到。是否真的可以删除并转到? 提前感谢您的时间,我在网上找不到任何合适的信息!

  • Back Stack是否支持与Android中的嵌套片段交互? 如果是这样,我做错了什么?在我的实现中,后退按钮完全忽略了我将此事务添加到后堆栈的事实。我希望这不是因为嵌套片段的问题,只是我做了一些不正确的事情。 以下代码位于我的一个片段中,用于将新片段与当前显示的任何嵌套片段交换:

  • 对于我工作的应用程序,我需要实现可访问性。除了一个屏幕外,其他一切都很好,我必须将片段添加到我的活动中。基本上,上面的片段是一个拨号键盘,用于输入密码。此片段与fragmentTransaction一起添加。 问题是对讲的焦点是设置在下面片段的元素上。 您知道是否有办法将对讲焦点设置在拨号片段上吗?我只想“禁用”下面的片段以获得焦点 谢谢,

  • 可以使用保存删除片段时的状态,然后在将片段弹出后堆栈时恢复状态吗?当我从后堆栈还原片段时,savedInstanceState包始终为空。 现在,应用程序流程是:创建的片段->删除的片段(添加到后堆栈)->从后堆栈恢复的片段(savedInstanceState包为空)。 下面是相关代码: 我认为问题是在被移除和添加到后堆栈时从未被调用。如果我不能使用onsavedInstanceState(),