Wie erhalte ich den Inhalt eines Tabs in einem TabHost?

8

Ich habe eine Aktivität definiert durch:

%Vor%

Grundsätzlich ist es ein TabHost mit TextViews als Inhalt. Ich baue die Tabs und den Inhalt dieser TextViews dynamisch mit createTabContent (). Das funktioniert gut. Aber unter einigen Umständen (einige Ereignisse, die von einer AsyncTask mit einem TCP-Socket verarbeitet werden), muss ich den Inhalt einiger dieser TextViews ändern.

Ich bin überzeugt, dass mein Problem das Ergebnis meiner Unerfahrenheit mit Android SDK ist, aber ich finde keine Möglichkeit, über den TabHost zu iterieren und den Inhalt für jedes dieser TextViews zu erhalten.

Der "nächste" Ansatz, den ich erreicht habe, ist:

%Vor%

Aber dies bedeutet, dass "linea" an den Namen der Registerkarte (an den Indikator) angehängt wird. Ich möchte es zu dem Inhalt dieses Tabs hinzufügen, aber ich kann keinen Weg finden, das ihm zugeordnete TextView abzurufen.

Irgendwelche Ideen werden sehr geschätzt!

--------- EDIT ---------

Obwohl ich in einem Kommentar unten geschrieben habe, dass ich bereits eine Lösung hatte, fand ich heraus, dass sie nicht gültig ist. Der Code sieht jetzt so aus:

%Vor%

Das Problem ist, dass getTabContentView () in diesem Moment nur auf die aktive Registerkarte verweist. Wenn ich also TextView einer nicht ausgewählten Registerkarte hinzufügen möchte, muss ich ihn zuvor mit .setCurrentTab (i) what auswählen bedeutet, dass ich den aktiven Tab ändern würde ...

Ich denke, das muss viel einfacher sein als ich denke ... Irgendeine Hilfe dabei?

Danke!

--------- EDIT ---------

An diesem Punkt habe ich festgestellt, dass der Zugriff auf den Inhalt eines inaktiven Tabs nicht möglich ist. Zumindest nicht so. Angeblich können Sie nicht auf eine inaktive Tab-Ansicht zugreifen, da ihr keine, zumindest keine öffentliche View zugeordnet ist.

Ich habe versucht, eine Map zu deklarieren, wobei der erste String der Name des Tabs ist und der zweite der TextView, der mit seinem Inhalt verknüpft ist, und er sie im Moment der Tab-Erstellung zuweist. Das Ergebnis war, dass ich nur die Textansicht der aktiven Registerkarte referenzieren konnte, die anderen eine NullPointer-Ausnahme.

Also habe ich das Problem anders fokussiert. Jetzt, wenn ich etwas Text in eine inaktive Registerkarte hinzufügen muss, füge ich diesen Text zu einem Hash hinzu, ich habe einen OnTabChangeListener deklariert und jedes Mal, wenn ich eine Registerkarte ändere, deponiere ich den ausstehenden Inhalt darin.

Es ist nicht die brillanteste Lösung, aber es ist die einzige, die ich arbeite ... also wenn jemand eine bessere Lösung dafür hat, werde ich dankbar sein.

    
nKn 17.11.2013, 12:00
quelle

4 Antworten

0

Registerkarten können über TabWidget aufgerufen werden:

%Vor%

Dieser Code gibt die Ansicht eines Tabs zurück, sogar eines inaktiven.

    
JPMagalhaes 30.10.2014 07:05
quelle
0

Erhalte zuerst die Ansicht des gesamten Tabs mit tabHost.getChildAt(n) und dann findViewById innerhalb der Tab-Ansicht, um eine Änderung zu übernehmen.

Beispiel:

%Vor%     
IconUse 31.01.2015 20:50
quelle
0

@nKn, danke für getTabContentView (). In meinem Fall gibt es keine Registerkarte zurück, sondern ein FrameLayout, das alle Registerkarten enthält, und das Folgende funktioniert:

%Vor%     
CoolMind 16.11.2016 18:07
quelle
0

TabHost-Unterregisterkarten können über TabWidget method getChildTabViewAt(position)

aufgerufen werden %Vor%

Die ausgewählte Registerkartenansicht kann wie folgt aufgerufen werden:

%Vor%     
Abu Yousuf 12.02.2018 05:22
quelle