Ошибка запуска учебника Android HelloTabWidget в SDK 1.5: «setCurrentTag (getIntent ())» - PullRequest
3 голосов
/ 02 февраля 2010

не компилируется. Действительно: даже в версии 1.5 этот API getIntent () уже указан как устаревший.

Я получаю сообщение об ошибке, в котором говорится, что getIntent () не возвращает строку, но setCurrentTab () ожидает строку.

Если я угадал и изменил строку на:

"tabHost.setCurrentTab (1); // был установленCurrentTab (getIntent ())",

затем компилируется, собирается, но не запускается. Я получаю сообщение об ошибке «неожиданно остановился» от эмулятора. Я даже не могу вывести Log.d на вывод, поэтому кажется, что он неожиданно останавливается очень рано.

Итак, первый и главный вопрос: как правильно исправить "tabHost.setCurrentTab (getIntent ())" в последней строке OnCreate () в http://developer.android.com/resources/tutorials/views/hello-tabwidget.html?

Второй и более простой вопрос: правильно ли я заменил mTabHost на tabHost в том месте, где это происходит?

Ответы [ 2 ]

4 голосов
/ 11 февраля 2010

Вот проблемы и исправления для этого конкретного урока:

Шаг 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");
0 голосов
/ 06 февраля 2010

На неофициальном Android Meetup я смог подтвердить, что мое первое предположение было в приблизительном значении: строка, напечатанная в руководстве, действительно неверна, ее следует заменить на что-то вроде: "tabHost.setCurrentTab (0); // was setCurrentTab (getIntent ()) ".

Было еще одно важное упущение, которое мне пришлось исправить, прежде чем я смог запустить Учебное пособие HelloTabWidget: Альбомы | Художники | SongsActivity все должны были быть добавлены в манифест, manifest.xml. Каким-то образом инструкции по обучению удалось пропустить упоминание об этом требовании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...