TabSpec firstTabSpec = tabHost.newTabSpec("tid1");
TabSpec secondTabSpec = tabHost.newTabSpec("tid1");
TabSpec thirdTabSpec = tabHost.newTabSpec("tid1");
Разрешено ли использовать один и тот же тег для нескольких TabSpec?Я попытался бы установить их правильно и посмотреть, исправит ли это.
РЕДАКТИРОВАТЬ: ОК, поэтому мое предложение не исправило это, но в любом случае имеет смысл иметь уникальные теги.
Попробуйте, чтобы увидеть, поможет ли это.Добавьте опцию, чтобы установить текущую выбранную вкладку в конце вашего метода LoadLayout () следующим образом (см. Последнюю строку) ...
/* Add tabSpec to the TabHost to display. */
tabHost.addTab(firstTabSpec);
tabHost.addTab(secondTabSpec);
tabHost.addTab(thirdTabSpec);
tabHost.setCurrentTab(0); // <== Add this
EDIT2: Я нашел TabWidget.Источник Java и строка 206 (где происходит исключение NullPointerException): ...
mBottomLeftStrip.setState(selectedChild.getDrawableState());
... есть три возможные причины исключения, которое я вижу.
- mBottonLeftStrip имеет значение null (крайне маловероятно)
- selectedCHild имеет значение null (TabWidget должен по умолчанию иметь дочерний 0 и использование tabHost.setCurrentTab () привело бы к тому, что в любом случае)
- Результат
selectedChild.getDrawableState()
равно нулю
Последнее, вероятно, является вероятной причиной, но я не уверен, что может привести к тому, что он вернет значение null.
Попробуйте Google для 'TabWidget.java source'- второй результат указывает на grepcode.com с номерами строк, и вы можете увидеть, что он пытается сделать в точке исключения.