9

Ich habe eine TabActivity und werde 3 oder 4 Registerkarten haben.Tabs von einer Registerkarte Aktivität in einem Android TabHost aktualisieren

In TabA möchte ich eine ExpandableListView haben, die Produkte auflisten wird. Ich möchte, dass TabC als eine Art "Einkaufswagen" fungiert, wahrscheinlich mit einem ListView von sich selbst.

Gibt es eine Möglichkeit, mit dem TabHost aus der Aktivität zu interagieren? Ich möchte in der Lage sein, auf eine Schaltfläche innerhalb von TabA zu klicken, sie aktualisieren zu lassen und zu TabC zu wechseln. Ist das möglich? Kann ich die Aktivitäten des Tabs als Elternmethoden aufrufen?

Antwort

16

Wenn Sie Ihre Registerkarten als Ansichten und nicht als einzelne Aktivitäten implementieren, wäre dies viel einfacher, schneller ausgeführt werden, weniger Speicher belegen und eine bessere Lösung IMHO sein.

Das gesagt wird, in der Registerkarte A Activity, rufen Sie getParent() an die TabActivity zu bekommen. Dann können Sie die Methoden verwenden, die disretrospect aufgezeigt hat.

+5

+1 für das getParent() Spitze - obwohl ich die Empfehlung, Ansichten statt Aktivitäten zu verwenden, nicht verstehe. Ich bevorzuge Aktivitäten, um die Lebenszyklen zu trennen und auch den Code zu trennen, der zu jedem Tab gehört. – FrVaBe

+0

@K. Claszen: "Die Lebenszyklen trennen" - ihre Lebenszyklen sind nicht getrennt. "Auch den zu jedem Tab gehörigen Code zu trennen" - Code-Trennung in Form von Java-Klassendateien gibt es seit 15 Jahren. Sie müssen hierfür keine separaten Aktivitäten verwenden. – CommonsWare

+1

Danke für die Antwort. Wie ich gesehen habe, werden die Lifecycle-Methoden für Aktivitäten (onCreate usw.) nur aufgerufen, wenn die zugehörige Registerkarte ausgewählt ist. Und ich möchte in der Lage sein, Aktivitäten wie "ExpandableListActivity" in einem Tab zu erweitern. Allerdings sind beide Möglichkeiten vorhanden und abhängig von der Anforderung, also habe ich mich gefragt, ob es eine allgemeine Empfehlung geben könnte. – FrVaBe

1
  1. in Ihrer Tätigkeit nutzen getParent(), um die TabActivity Eltern
  2. In Ihrem TabActivity Klasse zu erhalten, verwenden Sie getLocalActivityManager(). GetActivity (tabId)
  3. die Aktivität Objekt
  4. Aufruf der Aktivität Objekts Methode zu erhalten
+0

Wie wäre es mit der Ansicht in dieser Aktivität # 3? – Mikey

3

Versuchen diesen Code verwenden Aktivität innerhalb eines Registers zu ändern:

TabActivity parent = (TabActivity) getParent(); 
TabHost tabhost = parent.getTabHost(); 
tabhost.setCurrentTab(0);