我有一个活动 A,它调用片段 Bf,它又调用片段 Cf。我希望在调用 Cf 时将 Bf 放置在后台堆栈中,以便用户可以导航回它。但是,如果在 Cf 中按下特定按钮,我希望 Bf 从返回堆栈中删除。这可能吗?
我看到有一个 popBackStack() 函数。但是,我对这如何运作有点困惑。使用这个功能安全吗?是否有可能将来自不同应用程序的活动插入到 Backstack 上的 Bf 之后?
另外,有什么方法可以改变后台堆栈上片段的savedInstanceState吗?
我只是不知道如何使用模拟器对后台堆栈进行可靠的测试。
您可以按名称弹出片段。将片段添加到返回堆栈时,只需给它们命名即可。
fragmentTransaction.addToBackStack("fragB");
fragmentTransaction.addToBackStack("fragC");
然后在 Fragment_C 中,使用名称 ie 弹出返回堆栈。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);
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)