2012-03-05 78 views
0

我在TabActivity中有四个选项卡。在每个选项卡下启动一项活动,并在每项活动中启动几个片段。当某个选项卡上发生某些事件时,我想清除其他选项卡backstack。所以当用户访问剩余的标签时,片段会再次启动。如何清除其他标签的backstack?

回答

0

经过大量的思考,找到了解决我的问题。我认为的第一个解决方案是 我可以获得其他选项卡的片段管理器并弹出所有片段。但是当我试图运行它时,它会给出一个异常,即IllegalStateException,因为启动一个新的活动会调用该活动的onSaveInstance()。在调用之后,你不能修改该活动的后台内容。所以我找到了另一个解

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

0

可以将下面的标志设置为活动

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

这个标志将杀死活性,当你按下则tabspec再次

再次启动它