Проблемы с примером Android TabHost

Я пытался реализовать 'усовершенствованный' tabwidget пример от Google. Но, когда это пытается звонить tabHost.addTab(spec); Я получаю отслеживание стека от отладчика. Извините, у меня нет отслеживания стека здесь, но я задаюсь вопросом, была ли у других эта та же проблема (как этот код имел и недостающую информацию многой опечатки, которая остановила меня от ровной компиляции.

Кто-либо может указать на меня на исправленную/рабочую версию из этого кода?

Обновленная необходимая информация:




8
задан KevinDTimm 11 February 2010 в 02:30
поделиться

4 ответа

Текущий пример TabHost на сайте разработчиков Android содержит одну ошибку, а также не учитывает важный шаг, который помешает запуску примера. .

Во-первых: в методе onCreate (), который добавлен в класс HelloTabWidget, пытается использовать объект TabHost с именем mTabHost. Это недопустимо, это должен быть tabHost.

Во-вторых: В руководстве не учитываются детали, необходимые для добавления каждого из действий в файл AndroidManifest.xml. Без этого код не будет работать, и вы будете получать принудительное закрытие при каждой попытке выполнения.

9
ответ дан 5 December 2019 в 06:53
поделиться

Я провел последний час или около того, изучая этот урок. Вот проблемы и исправления, с которыми я имел дело:

Шаг 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");
12
ответ дан 5 December 2019 в 06:53
поделиться

Пример, исправленный Тедом, также работает, если все три действия не включают строку:

android:theme="@android:style/Theme.NoTitleBar"

Это полезно, если вам нужна строка заголовка в дополнение к вкладке этикетки.

1
ответ дан 5 December 2019 в 06:53
поделиться

Также

android:theme="@android:style/Theme.NoTitleBar"

не работает у меня, если я заменю его на

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

он работает нормально.

2
ответ дан 5 December 2019 в 06:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: