如何从后台弹出片段

新手上路,请多包涵

我有一个活动 A,它调用片段 Bf,它调用片段 Cf。我希望在调用 Cf 时将 Bf 放在后台堆栈中,以便用户可以导航回它。但是,如果在 Cf 中按下特定按钮,我希望将 Bf 从后台堆栈中删除。这可能吗?

我看到有一个 popBackStack() 函数。但是,我对这将如何工作感到有些困惑。使用此功能是否安全?是否有可能在后台堆栈的 Bf 之后插入来自不同应用程序的活动?

另外,有什么方法可以改变 backstack 上片段的 savedInstanceState 吗?

我只是不知道如何使用模拟器对 backstack 进行健壮的测试。

原文由 user2085335 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 610
2 个回答

您可以按名称弹出片段。在将片段添加到后台堆栈时,只需给它们一个名称。

 fragmentTransaction.addToBackStack("fragB");
fragmentTransaction.addToBackStack("fragC");

然后在 Fragment_C 中,使用名称弹出回栈,即 fragB 并包括 POP_BACK_STACK_INCLUSIVE

 someButtonInC.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        FragmentManager fm = getActivity()
                .getSupportFragmentManager();
        fm.popBackStack ("fragB", FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }
});

原文由 Archie.bpgc 发布,翻译遵循 CC BY-SA 3.0 许可协议

你可以试试这个方法

val fm= parentFragmentManager
fm.popBackStack("group", FragmentManager.POP_BACK_STACK_INCLUSIVE)

原文由 Anshul Nema 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏