Android Mehrere TabHosts im gleichen Projekt

robC

Mitglied
Hallo,

ich arbeite gerade an einer App, welche zwei TabHosts in zwei verschiedenen Activities anzeigen soll. Das Problem ist, dass der erste TabHost vom zweiten überschrieben wird, da ein TabHost anscheinend immer die ID "@android:id/tabhost" haben muss.
Ich benötige aber zwei verschiedene TabHosts mit verschiedenen Inhalten. Weiß jemand, wie man so etwas realisieren kann?

Vielen Dank im Voraus!
 

robC

Mitglied
Hallo und erstmal danke für's Antworten!

Also ich habe hier in einer XML das Layout für die Activity eingetragen und darin eben auch das TabHost angelegt. Über die dort zugewiesene ID spreche ich das TabHost dann in der jeweiligen Activity an.
Das Problem ist, dass sobald ich dem TabHost in der XML Datei eine andere ID als TabHost zuweise, ein Fehler entsteht. Daraus folgt, dass ich nur einen einzigen TabHost anlegen kann oder mehrere TabHosts keine verschiedenen Inhalte darstellen können.

Grüße :)
 

schlingel

Gesperrter Benutzer
Ähm, nein. Das folgt daraus nicht.

Den Inhalt der Tabs definierst du ja als Elemente im Framelayout im XML-File. Da du sowieso immer nur für die aktuelle Content-View in der Activity deine findViewById-Methode aufrufst stört es das System kein bisschen ob eine ID mehr als einmal im Projekt vorkommt.

(Ich hab zb. an ca. 10 Stellen eine TextView names lblMessage, auch kein Problem.)

Bei mir sieht das z.B. so aus:

[XML]
<TabHost
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@android:id/tabhost">
<TabWidget
android:id="@android:id/tabs"
style="@style/TabPanel" />
<FrameLayout
android:id="@android:id/tabcontent"
style="@style/TabContent">
<LinearLayout
android:id="@+id/tab1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:eek:rientation="vertical">
<include layout="@layout/tab1" />
</LinearLayout>
<LinearLayout
android:id="@+id/tab2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:eek:rientation="vertical">
<include layout="@layout/tab2" />
</LinearLayout>
<LinearLayout
android:id="@+id/tab3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:eek:rientation="vertical">
<include layout="@layout/tab3"/>
</LinearLayout>
</FrameLayout>
</TabHost>
[/XML]

So ähnliche Stellen habe ich noch in vier anderen XML-Dateien.
 

robC

Mitglied
Okay, danke für das Quellcodefragment und die Erläuterung.

Bei mir wurde der Inhalt meiner TabHosts immer von der an der im Eclipse Workspace an erster Stelle stehender Activity (alphabetisch geordnet) überschrieben. Kam mir irgendwie sehr komisch vor.

Der Fehler muss also wohl an anderer Stelle liegen. Ich dachte, es gibt vielleicht doch die Möglichkeit, andere IDs zuzuweisenund dass dies dann das Problem beheben würde. Ich melde mich wieder, sobald ich die Fehlerquelle und im Idealfall auch die Lösung hierfür gefunden habe.

Vielen Dank auf jeden Fall :)
 

Ähnliche Java Themen

Neue Themen


Oben