【问题标题】:Clear framgnetBackStack when particular fragment was opened打开特定片段时清除 framgnetBackStack
【发布时间】:2016-01-05 20:11:45
【问题描述】:

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

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

主要活动 - Bar-> Bar1-> Bar2-> Bar3

另外,我有一个菜单,所以我可以从任何地方访问 Fragments Foo 和 Bar:例如,它可以从 Foo2 或 Bar3 或任何其他 Fragment 访问。 问题是我想在打开此片段后输入 Foo 或 Bar 时清除后台堆栈。

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

(清除后台堆栈,这样后退按钮会关闭应用程序)。

我正在尝试通过这样做来关闭所有片段:

@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-> Foo1-> Foo2-> Foo3 -> Bar。 但是当出现 Bar Fragment 时,我只看到 Foo Fragment 。 不清除 backstack 似乎一切正常,除了返回按钮返回前一个 Foo3 片段。 那么,我做错了什么?

另外,我已经通过以下方式完成了清理工作:

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

但它也不起作用。

【问题讨论】:

标签: android android-fragments


【解决方案1】:

您只能在活动中清除 backstack,然后再打开任何片段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    相关资源
    最近更新 更多