如何从后台popup碎片

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

我看到有一个popBackStack()函数。 不过,我对这是如何工作有点困惑。 使用这个function是否安全? Bf在后台上插入不同应用程序的活动是否有可能?

另外,是否有任何方法来改变在堆叠片段的savedInstanceState?

我只是无法弄清楚如何使用模拟器对后台进行可靠的testing。

您可以按名称popup片段。 在向后端堆栈中添加碎片时,只需给他们一个名字。

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

然后在Fragment_C中,使用名称即.. fragBpopup返回栈,并包含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); } });