Problemas com Android TabHost Exemplo
-
18-09-2019 - |
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>
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).
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.