如何弹出碎片背斜

use*_*335 66 android android-fragments back-stack

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

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

另外,有没有办法改变backstack上片段的savedInstanceState?

我只是无法弄清楚如何使用模拟器在backstack上进行强大的测试.

Arc*_*pgc 116

您可以按名称弹出片段.在向后堆栈添加片段时,只需给它们命名即可.

fragmentTransaction.addToBackStack("fragB");
fragmentTransaction.addToBackStack("fragC");
Run Code Online (Sandbox Code Playgroud)

然后在Fragment_C中,使用名称ie fragB和include 来弹出后栈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);
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 即使我们在fm.popBackStack方法中也没有传递任何参数,它也会工作.fm.popBackStack(); (12认同)
  • 根据文件"所有状态将被弹出",而不仅仅是一个特定的片段. (4认同)

MD *_*ali 8

将片段弹出BackStack的三种方法

只需添加此行

1. getActivity().getSupportFragmentManager().popBackStack();

2. getActivity().getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

3. getActivity().getSupportFragmentManager().popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
Run Code Online (Sandbox Code Playgroud)

它很容易将片段弹出堆栈