Probleme mit Android TabHost Beispiel
-
18-09-2019 - |
Frage
Kann mir jemand deuten auf eine korrigierte / Laufen Version dieses Codes?
Die aktualisierte Informationen erforderlich sind:
<activity android:name=".ArtistsActivity"></activity>
<activity android:name=".AlbumsActivity"></activity>
<activity android:name=".SongsActivity"></activity>
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
Indiese 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.