Как удалить вкладку из TabHost

В виджне TabHost я могу создать новую вкладку с ее содержимым (Intent), используя TabHost.addTab(TabHost.TabSpec tabSpec).

Мы можем удалить все вкладки, которые мы создали, вызывая clearAllTabs(), но я не могу понять, как удалить вкладку или просто заменить содержимое (Intent) внутри вкладки с новым Intent.

так что мне нужно что-то вроде removeTab(int index)

Ответы

Ответ 1

Собственно, clearAllTabs делает это:

public void clearAllTabs() {
  mTabWidget.removeAllViews();
  initTabHost();
  mTabContent.removeAllViews();
  mTabSpecs.clear();
  requestLayout();
  invalidate();
}

И метод removeAllViews происходит из класса ViewGroup. К счастью, ViewGroup имеет методы для удаления только одного вида:

  • removeView(View view)
  • removeViewAt(int index)
  • removeViewInLayout(View view)

Зная, что я бы рекомендовал подклассы TabWidget и TabHost добавить нужное поведение. Может быть, есть более простой способ, но это единственный, о котором я могу думать. Удачи.

Ответ 2

Намного проще:

 tabHost.getTabWidget().removeView(tabHost.getTabWidget().getChildTabViewAt(3));