Рассмотрим сценарий установки начальной вкладки/по умолчанию на второй вкладке:Android TabHost По умолчанию Tab: Первая вкладка Добавлено всегда создается
TabHost _tabHost = getTabHost();
Intent intent0 = new Intent(this, Activity0.class);
Intent intent1 = new Intent(this, Activity1.class);
TabHost.TabSpec spec0 = _tabHost.newTabSpec("0").setIndicator(_vw0).setContent(intent0);
TabHost.TabSpec spec1 = _tabHost.newTabSpec("1").setIndicator(_vw1).setContent(intent1);
_tabHost.addTab(tabSpec0);
_tabHost.addTab(tabSpec1);
_tabHost.setCurrentTab(1);
Все ресурсы в Интернете показывают, что установка закладку по умолчанию осуществляется вызовом setCurrentTab (1) - однако выше код на самом деле вызовет ActivityO onCreate сначала, затем начнется строка Activity1 после строки setCurrentTab (1).
После копаться в источнике я заметил addTab TabHost в() метод вызывает setCurrentTab (0) само по себе в первый раз его называют:
public void addTab(TabSpec tabSpec) {
...
...
...
if (mCurrentTab == -1) {
setCurrentTab(0); <-- THIS will start first added Activity NO MATTER WHAT
}
}
Это, безусловно, проблема, если вы хотите, чтобы начать свое приложение с 2 по умолчанию. Я не хочу загружать 2 действия, когда мне нужно только 1.
Я подумывал написать собственный метод addTab, но реализация зависит от ряда частных членов (большинство из них защищены, но некоторые из них являются частными).
У моей Activity0 есть тяжелая логика в onCreate, поэтому я не хочу запускать это без необходимости и просто начинаю с Acivity1 по умолчанию.
Любые идеи?
Возможно, вам не нужно устанавливать метод setContent (намерение) до тех пор, пока пользователь не нажмет на вкладку, а затем проверьте, существует ли контент для «setContent (намерение) или нет). В любом случае, я всегда использую фрагменты для вкладок, а не действия. Зачем нужно начинать с табуляции 2, заменяя порядок табуляции, исправляя это, и из вашей короткой информации кажется лучшим подходом. – Sulfkain
Спасибо, я чувствую, что это сработает. Можете ли вы предоставить пример быстрого кода? – AlexVPerl
Если вы можете изменить заказ на вкладке, которая не нуждается в каком-либо коде, я предпочитаю этот подход до сих пор. – Sulfkain