如何清除其他标签backstack?

时间:2012-03-05 09:52:29

标签: android

TabActivity中有四个标签。在每个选项卡下启动一个活动,并在每个活动中启动几个片段。当某个选项卡上发生某些事件时,我想清除其他选项卡后退堆栈。因此,当用户访问其余选项卡时,会再次启动片段。

2 个答案:

答案 0 :(得分:0)

经过多次思考,找到了解决我问题的方法。我认为的第一个解决方案是 我可以获得其他标签的片段管理器并弹出所有片段。但是当我试图运行它时,它给出了一个例外,即IllegalStateException,因为启动一个新的活动会调用该活动的onSaveInstance()。在调用之后,不允许您修改该活动的Backstack内容。所以我找到了另一个解决方案。

当您在每个选项卡下启动活动时,如果在其他选项卡上发生某些事件,请从TabActivity的本地活动管理器中删除其他选项卡活动。因此,当您转到其余选项卡时,它会尝试从LocalActivityManager中查找这些活动。当我们删除这些活动时,他们没有从经理那里获得这些活动。因此,它再次启动活动。它给出了清理堆栈的行为。

答案 1 :(得分:0)

您可以将以下标志设置为活动

    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

当你再次按下Tabspec时,此标志将终止该活动并再次启动它