Ich habe einen Tabhost mit drei Tabs. Jeder ist eine Aktivität. Ich hätte gerne eine Schaltfläche, die in der Aktionsleiste ist, die Leiste oben mit gemeinsamen Schaltflächen, Funktionen des Tabs aufrufen, die aktiv ist.
Zum Beispiel eine Add-Funktion, die zu jeder Registerkarte etwas anderes hinzufügen kann, je nachdem, welche Registerkarte vorhanden war, als Sie auf die Schaltfläche geklickt haben.
Also, ich frage, wie man eine Funktion in der Aktivität A aus dem TabHost.
Und wenn das nicht funktioniert, kann ich vielleicht die Datenbank vom Tabhost aktualisieren und dann den Tab-Inhalt aktualisieren. Wäre das einfacher?
Danke Ihnen allen für Ihre Zeit und Unterstützung.
Hi Bin gerade darüber gestolpert, nicht sicher, ob du schon eine Lösung gefunden hast?
Ich habe das kürzlich selbst gelöst. Ich habe das Problem zuvor bereits gelöst, indem ich eine beabsichtigte Übertragung von der Tab-Host-Aktivität ausgelöst und die Übertragung innerhalb der Unter-Tab-Aktivität empfangen habe. Dies funktionierte für mich, aber ich war mir sicher, dass es einen "besseren" Weg gibt.
Ein sauberer Weg ist es, es mit so etwas zu erreichen:
könnte so etwas haben:
parentActivity
- mein "Container"
Aktivität, die den TabHost childActivity
- Meine Tab-Aktivität
welche Tab-Inhalt und die
öffentliche Methode, von der ich anrufen möchte
%Code%
in parentActivity:
%Vor%in childActivity:
%Vor% Hinweis: Eine weitere Alternative, die ich glaube, ist das Redesign, um Ansichten anstelle von Aktivitäten in Ihren Tabs zu verwenden. Dies ist eine bessere Gesamtalternative, da IIRC speicherweise nur 1 Aktivität auf dem Stapel gespeichert wird und nicht ( parentActivity
) Anzahl der Aktivitäten
Ich hoffe, das hilft
Ich habe den folgenden Code innerhalb meiner TabActivity -Klasse verwendet, um zwischen den Tabs zu wechseln und dann eine öffentliche Methode aufzurufen, die in der Aktivität des Tabs definiert wurde:
%Vor%Hoffentlich hilfreich für jemanden, der nach der Antwort auf diese Frage sucht.
Bearbeitet nach Peter O Anfrage:
Ich bin auf API 10 und dieses Problem hat mir große Kopfschmerzen bereitet. Ich habe 3 Tabs, ich möchte, dass alle auf Veränderungen aufmerksam werden. Das Problem, das ich hatte, war, dass, sobald die Aktivität für einen Tab gestartet wurde, kein Callback zu sein schien, so dass die Aktivität verstand, dass der Benutzer auf einen anderen Tab wechselte und somit arbeiten musste, um sicherzustellen, dass der Status korrekt war. p>
Ich habe viele Antworten auf dieses Problem gefunden, aber keine schien zu funktionieren.
Die eine, die ich endlich arbeiten ließ, war die Lösung, die als Nr. 3 für diesen Thread angeboten wurde - aber auch das ist verwirrend. Ich habe festgestellt, dass die getTabHost (). SetCurrentTab (0); tut nichts; Ich habe OnTabChangeListener () implementiert, um eine Funktion aufzurufen, die getTabHost () verwendet. SetCurrentTab (0); Ich fand jedoch die getTabHost (). setCurrentTab (0); Die Anwendung stürzte für alle anderen Registerkarten als 0 ab - wenn ich z. B. die Registerkarte B (Index = 1) wählte, dann getTabHost () genannt. setCurrentTab (1); Die App ist abgestürzt.
Mit dem Debugger habe ich den Aufruf this.getCurrentActivity (); gibt immer die Aktivität zurück, die mit der Registerkarte verknüpft ist, auf die der Benutzer geklickt hat, und ruft getTabHost () auf. setCurrentTab (); änderte diese Tatsache nicht und verursachte einen Absturz der App.
Also habe ich es losgeworden und kann jetzt this.getCurrentActivity () aufrufen und dann eine Methode in der Actvitity-Klasse aufrufen, die von diesem Aufruf zurückgegeben wird - dadurch weiß die Aktivität, dass sie ihren Status aktualisieren muss - in meinem Fall Dies geschieht über das Anwendungsobjekt.
Der obige Aufruf der Methode funktioniert nicht,
Hier ist die schnelle Antwort für das obige Problem:
getTabHost().setCurrentTab(0);
Activity myActivity=getCurrentActivity();
String name=((Tab1) myActivity).et1.getText().toString();
Hier ist der obige Code in der Methode onclick()
der Aktivität angegeben, die TahHost hat
Dabei ist Tab1 die zweite Aktivität und et1 ist die Identität des Editiertext in der Tab1-Aktivität, so dass Sie den gesamten Wert der verschiedenen Felder einzeln erhalten können.
Tags und Links android android-tabhost