После долгого времени борьбы с этой проблемой я смог найти решение для переключения вкладок при использовании вкладок на основе действий.
В родительском классе активности, где создан tabhost, я реализовал метод, подобный приведенному ниже:
public void switchTab(int tab){
tabHost.setCurrentTab(tab);
}
Внутри вкладки, которую я хотел бы иметь возможность внутренне переключаться на другую вкладку, я создал следующий метод:
public void switchTabInActivity(int indexTabToSwitchTo){
MintTrack parentActivity;
parentActivity = (MintTrack) this.getParent();
parentActivity.switchTab(indexTabToSwitchTo);
}
Если вам нужен хороший пример этого кода, вы можете взглянуть на мой проект MintTrack здесь и здесь .
В качестве примечания, пожалуйста, будьте очень осторожны при принятии решения, использовать ли TabHost на основе вида или вида деятельности.
Activity
вкладки на основе хороши тем, что их можно разделить на собственный XML-файл. Действия могут также быть организованы в свой собственный Java-файл вместо того, чтобы быть загроможденным в один. При этом некоторые вещи, которые вы могли бы подумать, будут легко усложнены с помощью вкладок на основе действий. Трудно передавать информацию между вкладками, не создавая накладных расходов. Вкладки, основанные на Activity
, также используют больше памяти / процессорного времени, поскольку они имеют издержки Activity
вокруг каждой из них. Пожалуйста, рассмотрите это и многие другие компромиссы, прежде чем углубляться в использование Activity
на основе TabHost
. Теперь я знаю, что лично я бы выбрал представление, основанное на TabHost
, если бы я когда-либо использовал их снова.