【问题标题】:Hide all Fragments in Backstack but still being able to go back隐藏 Backstack 中的所有 Fragment 但仍然可以返回
【发布时间】:2015-05-01 15:26:45
【问题描述】:

我的活动中有一个小布局,我根据用户在应用程序中导航添加片段。

假设用户是这样导航的:

Activity -> Fragment A -> Fragment B -> Fragment C -> 按钮点击

我希望能够隐藏片段并再次显示空白活动。

这就是我将片段添加到活动中的方式:

protected void addFragment(Fragment fragment)
    {
        getSupportFragmentManager().beginTransaction().replace(R.id.secondary_fragment, fragment).addToBackStack(fragment.getTitle()).commit();
    }

为了清除所有的碎片,我使用:

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

但是,有没有一种方法可以清除碎片,如果用户按下回,他们将能够返回到 Fragment C(而不是退出应用程序)?

【问题讨论】:

    标签: android android-fragments back-stack fragment-backstack fragmentmanager


    【解决方案1】:

    也许不是弹出所有的 backStack,而是通过 id 和 setVisibility 获取片段视图为不可见?

    【讨论】:

    • 我想过这个......我想启用“后退”按钮,我只需将 setVisibility 设置为 Visible
    • @StackOverflowed 是的,重写 onBackPressed 方法,检查视图是否不可见,如果是,使其可见,否则执行 super.onBackPressed。
    【解决方案2】:

    尝试在按下按钮时使用清晰的堆栈启动 Activity 的新实例(如果我正确地假设这在您描述的 C 之后出现)。这样,First Activity 实例仍将具有最多 Fragment C,而 Second Activity 实例将是您喜欢的任何实例(Fragment A > Fragment D > Fragment F)。而且您不需要为任何 Activity 弹出/清除任何返回堆栈。

    HTH

    【讨论】:

    • 这实际上是一种有用的方法。但是,我试图避免多个活动,
    • 如果需要,完全可以这样使用。试一试,因为我相信这将减少您在应用中必须执行的片段管理。
    猜你喜欢
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多