0

我的应用程序有一个活动 A,它在创建时加载 ListFragment -> Fa。

在选择其中一个项目时,Fa 被添加到 BackStack 并被另一个具有不同数据集的 Fa 实例替换。

在这个 Fa 的新实例中选择一个项目将其放入 BackStack 并用第三个 ListFragment -> Fb 替换它,其布局不同。

Fb 旨在以分页方式显示列表,底部有 2 个按钮,(上一个)和(下一个)。

现在我希望当用户单击下一个按钮时,我应该使用 Fb 的新实例显示列表的下一页,但我不想将其前一个实例添加到 backstack,以便当用户按下设备上的后退按钮时,他应该被带到Fa的第二个实例而不是Fb的前一个实例。

我能够实现所有的前向遍历位以及上一个和下一个按钮任务,但是现在当我按下后退按钮时,Fa 的第二个实例出现了,但是 Fb 的最后一个实例没有被删除并且可以在背景。

当我按下后退按钮时,如何删除所有 Fb 实例并仅显示 Fa。

4

1 回答 1

0

您可以覆盖后退按钮行为并将后退堆栈“弹出”到所需的片段:

@Override
public void onBackPressed() {
    fragmentManager.popBackStack(R.id.fragmentA, 0);
}

popBackStack将消耗所有片段,直到它到达调用时提供的片段。

于 2013-06-26T11:09:41.343 回答