Если вы хотите увидеть, что нажата определенная вкладка, вам нужно добавить слушателя к самой вкладке, а не к TabHost.
Иерархия представлений в реализации вкладки:
Вкладки добавляются во время выполнения по телефону: tabHost.addTab(tabHost.newTabSpec(""));
Затем вы можете получить указатель на отдельные вкладки, позвонив по номеру: getTabWidget().getChildAt(4);
По сути, вы добавляете OnClickListener
к дочернему элементу TabWidget. Теперь вы можете подобрать клики на отдельной вкладке. Однако это переопределит поведение по умолчанию, которое изменяет содержимое при нажатии на вкладку. Таким образом, чтобы ваш контент изменился, ваш OnClickListener
должен сделать это за вас.
Вот полный пример, который позволяет вам перехватить событие нажатия и изменить содержимое под вкладкой:
final String myTabTag = "My Tab";
final int myTabIndex = 3;
getTabHost().addTab( getTabHost().newTabSpec(myTabTag) );
getTabWidget().getChildAt(myTabIndex).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (getTabHost().getCurrentTabTag().equals(myTabTag)) {
getTabHost().setCurrentTab(myTabIndex );
}
}
});