销毁或完成TabHost中tabcontent中的Activity



我有一个应用程序,我已经使用Tab主机在一个屏幕上举行多个活动。这就是我如何添加制表符到制表符主机。

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);

在我的自定义视图指示器中,有一个关闭按钮,应该关闭该选项卡和与之关联的活动。下面是我如何在选项卡上单击关闭按钮时成功地从选项卡- widget中删除视图的。

tabHost.getTabWidget().removeViewAt(index_of_tab);

这段代码删除了选项卡,但它没有删除在framayout (tabcontent)中启动的活动,并且它导致在打开不同的选项卡时再次显示该活动。

例如,有一次我打开了活动MyClass1的选项卡并关闭它。我再次打开活动MyClass2的新选项卡,但是旧的活动MyClass1再次出现,而不是MyClass2

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

请帮助。谢谢。

我不得不在我的一个项目中使用TabHost,就标签关闭而言,我放弃了它,并以野蛮的方式完成了它,似乎TabHost在关闭标签时有点棘手。

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

这样,每次我必须在TabHost上调用clearAllTabs(),我只需要迭代地图并在每个标签上调用.addTab(),我想保留TabHost.TabSpec作为参数(当然,也要删除我想要从地图中清除的那个)。

相关内容

  • 没有找到相关文章

最新更新