War es hilfreich?

Lösung

Die aktuelle TabHost Beispiel auf der Android-Entwickler-Website einen Fehler enthält und auch einen wichtigen Schritt auslässt, dass das Beispiel nicht ausgeführt werden wird.

Als erstes: Im onCreate () Methode, die HelloTabWidget Klasse hinzugefügt wird versucht, ein Objekt zu benutzen TabHost genannt mTabHost. Dies ist ungültig, es sollte TabHost sein.

An zweiter Stelle: Das Tutorial verläßt die Details, die Sie brauchen jede der Aktivitäten zu dem AndroidManifest.xml hinzuzufügen. Ohne dies wird der Code nicht funktionieren und Sie werden „zwingen schließen“ jedes Mal, wenn Sie ausführen versuchen, lernen.

Andere Tipps

Ich verbrachte die letzte Stunde oder so durch dieses Tutorial gehen. Hier ist die Probleme und Korrekturen dafür, dass ich behandelt:

Schritt 2:. Wenn Sie Ihre Aktivitäten zu schaffen, wenn man sie durch das Manifest nicht erstelle dann müssen Sie sie auf das Manifest manuell hinzufügen

In

diese Zeilen 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>

Schritt 3: Sie sind angewiesen, nur die ic_tab_artists.xml Datei zu erstellen. Sie werden eine für ic_tab_songs.xml und ic_tab_albums.xml auch erstellen müssen. Sie können nur die ic_tab_artists.xml duplizieren (oder die HelloTabView.java Registerkarte Spezifikationen ändern, um die artists.xml Datei für jede Registerkarte zu verwenden).

Schritt 4: Die dritte bis letzte Zeile unter / res / layout / Main hat einen Tippfehler (a; anstelle von a:)

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

Schritt 6: Es ist ein Tippfehler, die Anrufe mTabHost statt TabHost verwendet. Ändern Sie es.

Wie bereits die getIntent () Funktion in der letzten Zeile zitiert ist nicht angemessen. Ich nenne nur die Registerkarte basierend auf seine ID. zB:

tabHost.setCurrentTabByTag("albums");

Auch die

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

hat bei mir nicht funktioniert, wenn ich es mit

ersetzen

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

es funktioniert gut.

Das Beispiel, wie Ted korrigiert, funktioniert auch, wenn alle drei Aktivitäten beinhalten nicht die Zeile:

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

Dies ist nützlich, wenn Sie eine Titelleiste neben der Registerkarte Etiketten möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top