打开特定片段时清除framgnetBackStack

时间:2015-10-08 09:31:04

标签: android android-fragments

当我打开一个特定的片段时,我试图清除背斜。 让我们假设我有Fragment Foo和Fragment Bar,我可以在MainActivity中打开它。此外,我可以打开Foo或Bar的其他片段。 这是一个简单的方案:

主要活动 - Foo-> Foo1-> Foo2-> Foo3

主要活动 - 栏 - > BAR1-> Bar2-> BAR3

另外,我有一个菜单,所以我可以从任何地方访问Fragments Foo和Bar:e.i它可以从Foo2或Bar3或任何其他片段到达。 事情是,当我打开这个片段后,当我进入Foo或Bar时,我想清除背斜。

主要活动 - Foo-> Foo1-> Foo2-> Foo3 - >杆

(清除背斜,所以后退按钮会关闭应用程序)。

我试图通过这样做来关闭所有片段:

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    FragmentManager fm = getActivity().getSupportFragmentManager();
    for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
        fm.popBackStack();
    }
}

操纵就是这个顺序: 主要活动 - Foo-&gt; Foo1-&GT; Foo2-&GT; Foo3 - &gt;酒吧。 但是当Bar Fragment出现时,我只会看到Foo Fragment。 除非后退按钮返回之前的Foo3片段,否则在不清除后台堆栈的情况下似乎都能正常工作。 那么,我做错了什么?

另外,我通过以下方式完成了清算:

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

但它也不起作用。

1 个答案:

答案 0 :(得分:0)

在打开任何片段之前,您只能在活动中清除backstack。