Pergunta

Eu tenho tentado implementar o 'avançado' TabWidget exemplo do Google. Mas, quando se tenta chamar tabHost.addTab(spec); eu recebo um rastreamento de pilha do depurador. Desculpe, eu não tenho o rastreamento de pilha aqui, mas eu estou querendo saber se outros tiveram esse mesmo problema (como este código teve um número de typo do e informações que me impediu de sequer compilar faltando.

Pode alguém me aponte para uma versão corrigida / corrida deste código?

As informações são atualizadas necessários são:

<activity android:name=".ArtistsActivity"></activity>
<activity android:name=".AlbumsActivity"></activity>
<activity android:name=".SongsActivity"></activity>
Foi útil?

Solução

A corrente Exemplo TabHost no site Android Developers contém folhas de um erro e também fora um passo importante que irá impedir o exemplo de execução.

Primeiro: No método onCreate () que é adicionado a tentativas de classe HelloTabWidget utilizar um objecto TabHost chamado mTabHost. Esta é inválido, deve ser TabHost.

Em segundo lugar: As folhas tutorial fora os detalhes que você precisa adicionar cada uma das atividades também o AndroidManifest.xml. Sem este código não vai funcionar e você receberá "força perto" cada vez que você tentar executar.

Outras dicas

Eu passei a última hora ou assim que ir por esse tutorial. Aqui estão os problemas e correções para ele que eu lidei com:

Passo 2:. Ao criar suas atividades, se você não criá-los através do manifesto, em seguida, você precisa adicioná-los ao manifesto manualmente

Adicionar estas linhas para 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>

Passo 3: Você só são instruídos para criar o arquivo ic_tab_artists.xml. Você precisará criar um para ic_tab_songs.xml e ic_tab_albums.xml também. Você pode apenas duplicar o ic_tab_artists.xml (ou alterar as especificações guia HelloTabView.java para usar o arquivo artists.xml para cada guia).

Passo 4: A terceira a última linha sob / res / layout / principal tem um erro (um; em vez de um:)

      android:padding="5dp" />
    </LinearLayout>
</TabHost>

Passo 6: Há um erro de digitação que usa chamadas mTabHost vez de TabHost. Mudá-lo.

Como já foi citado a função getIntent () na última linha não é apropriado. Eu só chamar o guia baseado em seu id. por exemplo:

tabHost.setCurrentTabByTag("albums");

Além disso, o

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

não funciona para mim, se eu substituí-lo com

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

ele funciona bem.

O exemplo, tal como rectificada pelo Ted, também funciona se todas as três atividades não incluem a linha:

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

Isto é útil se você quer uma barra de título além dos rótulos de guia.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top