Android - 管理片段交换

时间:2013-06-26 10:59:14

标签: android android-listfragment back-stack

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

在选择其中一个项目时,Fa被添加到BackStack中,并被另一个Fa实例替换为另一组数据。

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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