我有一个应用程序,我已经使用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
作为参数(当然,也要删除我想要从地图中清除的那个)。