0

我需要在我的应用程序的某个时刻创建一个特定的行为。我使用导航抽屉并替换框架布局中的片段。

假设我在后台堆栈中有一些片段:A -> B -> C。A
是我的应用程序中的根片段之一,如果在 A 上按下后退按钮,则应用程序退出。

当我在 C 上(A 和 B 在后台)时,我想去 E 和 D 在后台。这意味着如果我按下 E 上的后退按钮,我想转到 D(D 是我的应用程序中的另一个根片段,如果我按下 D 上的后退按钮应用程序退出)。

现在我清除返回堆栈,然后用 D 替换当前片段,然后用
E正确的?)

4

2 回答 2

0

为了避免在从 C 到 E 的转换过程中显示 D,您可以添加一个布尔值来跟踪 D 是否第一次处于活动状态。你在 D 中检查它onActivityCreated;如果这是第一次激活 D(当你真的想显示 E 时),不要加载内容,然后翻转布尔值,这样你就知道下次 D 激活时加载内容。

于 2014-11-26T22:28:56.370 回答
-1

您可以做的第一部分(C -> E 与 D 在 backstack 上)。只需将两者添加到同一事务中:

getFragmentManager().beginTransaction()
    .add(R.id.container, FragmentD.newInstance())
    .add(R.id.container, FragmentE.newInstance())
    .addToBackStack(null)
    .commit();

然后你会顺利过渡到 E 而看不到 D,但 D 会在 E 的后面。

不幸的是,除了从堆栈中弹出它们之外,没有办法从后堆栈中删除项目(您不能从堆栈底部删除某些东西)。

于 2014-11-26T23:15:43.570 回答