从TabHost中的tabcontent中销毁或完成一个Activity?

时间:2014-05-01 14:52:03

标签: android android-tabhost tabwidget

我有一个应用程序,我使用Tab Host在一个屏幕上保存多个活动。这就是我向Tab Host添加标签的方式。

TabHost tabHost = getTabHost();
TabSpec tab1 = tabHost.newTabSpec("Tab1");
View view = getLayoutInflater().inflate(R.layout.tab_indicator, myLayout, false);
tab1.setIndicator(view);
tab1.setContent(new Intent(getApplicationContext(), MyClass1.class));
tabHost.addTab(tab1);

在我的指标自定义视图中,有一个关闭按钮,可以关闭该选项卡以及与之关联的活动。以下是在选项卡上单击关闭按钮时,我从Tab-Widget中成功删除视图的方法。

tabHost.getTabWidget().removeViewAt(index_of_tab);

此代码删除了该选项卡,但它不会删除在FrameLayout(tabcontent)中启动的活动,并且当打开具有不同Acvitiy的不同选项卡时,它会再次显示此活动。

例如,我打开一个活动 MyClass1 的标签并关闭它。我再次打开一个活动 MyClass2 的新标签页,但旧的活动 MyClass1 再次出现,而不是 MyClass2

我做错了吗?如果错误,关闭选项卡以及与之关联的活动的正确方法是什么?

请帮助。感谢。

1 个答案:

答案 0 :(得分:2)

我必须在我的一个项目中使用TabHost,就关闭选项卡而言,我放弃并以粗暴的方式执行,因为似乎TabHost有点棘手关闭标签时。

所以我最终调用了.clearAllTabs()并恢复了我想要保留的标签。当你意识到一旦你设置了TabHost.TabSpec对象,你无法检索它,在选项卡或类似物上没有任何getTabSpec()方法,那么整个事情就更糟了,所以我终于宣布了一个ArrayMap<String, TabHost.TabSpec>每次添加标签时,我都会将其保存在该地图中。

这种方式每当我必须在clearAllTabs()上拨打TabHost时,我只需要遍历地图并在.addTab()的每个标签上调用TabHost.TabSpec {{1}} {{1}} 1}}作为参数(当然,也删除我要从地图中清除的那个)。