Я пытался реализовать 'усовершенствованный' tabwidget пример от Google. Но, когда это пытается звонить tabHost.addTab(spec);
Я получаю отслеживание стека от отладчика. Извините, у меня нет отслеживания стека здесь, но я задаюсь вопросом, была ли у других эта та же проблема (как этот код имел и недостающую информацию многой опечатки, которая остановила меня от ровной компиляции.
Кто-либо может указать на меня на исправленную/рабочую версию из этого кода?
Обновленная необходимая информация:
Текущий пример TabHost на сайте разработчиков Android содержит одну ошибку, а также не учитывает важный шаг, который помешает запуску примера. .
Во-первых: в методе onCreate (), который добавлен в класс HelloTabWidget, пытается использовать объект TabHost с именем mTabHost. Это недопустимо, это должен быть tabHost.
Во-вторых: В руководстве не учитываются детали, необходимые для добавления каждого из действий в файл AndroidManifest.xml. Без этого код не будет работать, и вы будете получать принудительное закрытие при каждой попытке выполнения.
Я провел последний час или около того, изучая этот урок. Вот проблемы и исправления, с которыми я имел дело:
Шаг 2: Если вы создаете свои действия, если вы не создаете их через манифест, вам нужно будет добавить их в манифест вручную.
Добавьте эти строки в AndroidManifest.xml:
<activity android:name=".AlbumsActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
</activity>
<activity android:name=".ArtistsActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
</activity>
<activity android:name=".SongsActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
</activity>
Шаг 3: Вам предлагается только создать файл ic_tab_artists.xml. Вам также необходимо создать его для ic_tab_songs.xml и ic_tab_albums.xml. Вы можете просто продублировать ic_tab_artists.xml (или изменить спецификации вкладки HelloTabView.java, чтобы использовать файл Artist.xml для каждой вкладки).
Шаг 4: В предпоследней строке в / res / layout / main есть опечатка (a; вместо a :)
android:padding="5dp" />
</LinearLayout>
</TabHost>
Шаг 6: Опечатка, в которой вместо этого используются вызовы mTabHost. tabHost. Измени это.
Как уже упоминалось, функция getIntent () в последней строке не подходит. Я просто вызываю вкладку на основе ее идентификатора. например:
tabHost.setCurrentTabByTag("albums");
Пример, исправленный Тедом, также работает, если все три действия не включают строку:
android:theme="@android:style/Theme.NoTitleBar"
Это полезно, если вам нужна строка заголовка в дополнение к вкладке этикетки.
Также
android:theme="@android:style/Theme.NoTitleBar"
не работает у меня, если я заменю его на
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
он работает нормально.