2012-03-01 26 views
2

我正在开发一个由顶级TabActivity组成的Android 2.3.3应用程序。我还加入了一些标签的TabHost的编程,并给予每一个独立的子活动:在TabHost中关闭/重新启动活动

intent = new Intent().setClass(this, MyFirstActivity.class); 
spec = tabHost.newTabSpec(...).setIndicator(...).setContent(intent); 
tabHost.addTab(spec); 

intent = new Intent().setClass(this, MySecondActivity.class); 
spec = tabHost.newTabSpec(...).setIndicator(...).setContent(intent); 
tabHost.addTab(spec); 

的事件在我的应用程序的其他地方发生,并响应我要重新创建所有选项卡活动。要做到这一点,我打电话给getTabHost()。clearAllTabs(),虽然它从标签中删除它看起来并没有真正杀死活动。如果我再次运行上面的代码,现有的活动将简单地添加回到它们的选项卡,并且它们继续像以前一样运行。

当我创建意图时,是否需要设置标志或其他东西,以便它们可以正确关闭并重新创建?或者,有没有其他方式让孩子活动告诉他们何时从父级TabActivity中移除?

回答

1

您可以通过设置标志重新启动活动。代码如下。

spec = tabHost .newTabSpec("tab1") 
        .setIndicator("FirstActivity") 
        .setContent(new Intent(this,MyFirstActivity.class) 
        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 
    tabHost.addTab(spec); 
+0

谢谢拉朱。我确实在文档中看到过这个标志,但我完全误解了它的用途。出于某种原因,我认为它清除了整个活动堆栈。谢谢您的帮助! – 2012-03-01 22:50:51

+1

欢迎马克。 – 2012-03-02 06:05:56