Android: Wie nennen Funktion der Aktivität im inneren des tab aus dem tabhost
Ich habe einen tabhost mit drei Registerkarten. Jedem ist eine Aktivität. Ich würde gerne eine Taste, die in der action-bar, die bar, die entlang der Oberseite mit gemeinsamen Tasten, Funktionen aufrufen, die in der Registerkarte aktiv ist.
Beispielsweise eine Funktion hinzufügen könnte hinzufügen, etwas anderes zu jeder Registerkarte, je nachdem, auf welchem Karteireiter vorhanden war, wenn Sie auf die Schaltfläche.
So, ich bin aksing wie eine Funktion aufgerufen wird, in der die Aktivität Eines aus dem tabHost.
Und wenn das nicht funktioniert, vielleicht kann ich das aktualisieren der Datenbank von dem tabhost und aktualisieren Sie dann die Registerkarte Inhalt. Wäre das einfacher?
Danke Ihnen allen für Ihre Zeit und Unterstützung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hallo Gerade stolperte über dieses, nicht sicher, ob du schon eine Lösung gefunden?
Löste ich dieses mir vor kurzem. Ich war bisher immer rund um die problem durch die Erhöhung intent-broadcast aus dem tabhost Aktivität und Erhalt der Sendung innerhalb der sub-Registerkarte Aktivität. Dieser arbeitete für mich, aber ich war sicher, dass es eine "bessere" Art und Weise.
Sauberer ist, es zu erreichen mit so etwas wie dies:
könnte so etwas wie dieses:
parentActivity
- mein "container"Aktivität, die hält den TabHost
childActivity
- my tab " Aktivitätdas hält die Registerkarte Inhalt und die
öffentliche Methode, die ich aufrufen möchten
parentActivity
innerhalb parentActivity:
innerhalb childActivity:
Hinweis: eine Andere alternative, die ich glaube, ist die Neugestaltung views anstelle von Aktivitäten in Ihren tabs. Dies ist eine insgesamt bessere alternative, weil IIRC Speicher weisen Sie nur die Speicherung von 1-Aktivitäten auf dem stack statt (
n * tabs
) Anzahl der AktivitätenHoffe, das hilft
Ich verwendete den folgenden code in meinem TabActivity Klasse zu wechseln klicken, rufen Sie eine öffentliche Methode, definiert in der Aktivität der Registerkarte:
Hoffentlich hilfreich für jemanden der Suche nach der Antwort auf diese Frage.
Bearbeitet pro Peter O Anfrage:
Bin ich auf API 10, - und dieses problem gab mir eine große Kopfschmerzen. Ich habe 3 tabs, ich möchte, dass alle von Ihnen sich bewusst sein, der Veränderungen auf der anderen. Das problem, das ich hatte, war, dass, sobald die Aktivität für eine Registerkarte wird gestartet, es schien kein Anruf zurück, so dass die Aktivität verstanden, die den Benutzer wechselte zu einer anderen Registerkarte, und somit benötigt, um Arbeit zu tun, um sicher zu sein, seinen Zustand richtig war.
Fand ich viele Antworten auf dieses problem, aber keiner schien zu funktionieren.
Dem einen, dass ich endlich zur Arbeit wurde die angebotene Lösung als #3 für diesen thread-aber es ist auch verwirrend. Ich fand, dass die getTabHost().setCurrentTab(0); macht nichts; ich umgesetzt OnTabChangeListener() zum aufrufen einer Funktion, die verwendet getTabHost().setCurrentTab(0); allerdings fand ich die getTabHost().setCurrentTab(0); verursacht die app zum Absturz, für jede Registerkarte einen anderen Wert als 0--e.g, Wenn ich wählte Registerkarte B (index=1), dann heißt getTabHost().setCurrentTab(1); die app abgestürzt ist.
Den Debugger, ich fand das Gespräch dieses.getCurrentActivity(); gibt immer die Tätigkeit im Zusammenhang mit der Registerkarte, die der Benutzer angeklickt--Aufruf getTabHost().setCurrentTab(); nicht ändern diese Tatsache, und verursachte die app zum Absturz bringen.
So, ich bin ihn Los und ich kann nun diesen Aufruf.getCurrentActivity(), dann rufen Sie eine Methode auf in der Actvitity Klasse zurückgegeben, die von diesem Anruf --diese können die Aktivität wissen es zu aktualisieren, es ist Staat-in meinem Fall es tut dies durch Verwendung des application-Objekts.
In der oben beschriebenen Weise der Aufruf der Methode wird nicht funktionieren,
Hier ist die schnelle Antwort für das problem von oben:
getTabHost().setCurrentTab(0);
Activity myActivity=getCurrentActivity();
String name=((Tab1) myActivity).et1.getText().toString();
Hier der obige code ist in der
onclick()
Methode von der Aktivität TahHostwo Tab1 ist die secondactivity und et1 ist die Identität des edittext in der Tab1 Aktivität, so können Sie die Werte der verschiedenen Felder wie diese individuell.