Question

J'ai essayé de mettre en œuvre la 'avancée' tabwidget exemple de Google. Mais, quand il essaie d'appeler tabHost.addTab(spec); je reçois une trace de la pile du débogueur. Désolé, je n'ai pas la trace de la pile, mais je me demande si d'autres ont eu cette même question (que ce code avait un certain nombre de faute de frappe et de l'information manquante qui m'a empêché de même la compilation.

Quelqu'un peut-il me pointer vers une version corrigée / en cours d'exécution de ce code?

Les informations mises à jour nécessaires sont:

<activity android:name=".ArtistsActivity"></activity>
<activity android:name=".AlbumsActivity"></activity>
<activity android:name=".SongsActivity"></activity>
Était-ce utile?

La solution

Le TabHost Exemple sur le site Développeurs Android contient une erreur et laisse également une étape importante qui empêche l'exemple de l'exécution.

Tout d'abord: Dans le procédé onCreate () qui est ajouté à la classe HelloTabWidget tente d'utiliser un objet TabHost appelé mTabHost. Ceci est invalide, il devrait être tabHost.

Deuxième: Le tutoriel laisse les détails que vous devez ajouter chacune des activités aussi le AndroidManifest.xml. Sans cela, le code ne fonctionnera pas et vous obtiendrez « forcer près » à chaque fois que vous essayez d'exécuter.

Autres conseils

J'ai passé la dernière heure ou passer par ce tutoriel. Voici les problèmes et les correctifs pour cela que je me suis occupé:

Étape 2:. Lorsque vous créez vos activités, si vous ne les crée pas par le manifeste alors vous aurez besoin de les ajouter au manifeste manuellement

Ajoutez ces lignes à 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>

Étape 3: Vous ne créer le invité fichier ic_tab_artists.xml. Vous devrez créer un ic_tab_songs.xml et ic_tab_albums.xml ainsi. Vous pouvez simplement dupliquer le ic_tab_artists.xml (ou modifier les spécifications de l'onglet HelloTabView.java utiliser le fichier artists.xml pour chaque onglet).

Étape 4: Le troisième à la dernière ligne sous / res / layout / principal a une faute de frappe (a, au lieu d'un:)

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

Étape 6: Il y a une faute de frappe qui utilise des appels mTabHost au lieu de tabHost. Changez-le.

Comme il a déjà cité la fonction getIntent () sur la dernière ligne ne convient pas. Je viens d'appeler l'onglet en fonction de son ID. par exemple:

tabHost.setCurrentTabByTag("albums");

De plus, le

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

ne fonctionne pas pour moi, si je le remplace par

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

il fonctionne très bien.

L'exemple, tel que corrigé par Ted, travaille également si les trois activités ne comprennent pas la ligne:

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

Ceci est utile si vous voulez une barre de titre en plus des étiquettes de l'onglet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top