Ich habe Probleme, Daten von einer Aktivität an Fragmente zu übergeben. Ich suchte herum, fand aber keine Antwort, die meiner Situation gut entsprach.
Ich habe 2 Fragmentklassen namens CurrentFragment.java
und HistoryFragment.java
. Ich initialisiere sie als Tabs in einer Aktivität.
Mir wurde gesagt, dass ich setArguments
in der Aktivität und getArguments
in den Fragmenten verwenden soll. Aber wie bekomme ich in dieser Situation Fragmentobjekte in der Aktivität? Ich kann getFragmentManager().findFragmentById()
nicht verwenden, da die Fragmente programmgesteuert hinzugefügt werden.
Außerdem finde ich einige Posts, die sagen, dass ich getActivity()
in Fragmenten verwenden kann, um auf Daten im Aktivitätscontainer zuzugreifen, aber für mich gibt es immer null zurück. Hat jemand ein funktionierendes Beispiel dafür?
[EDIT] Ich habe meine Antwort aktualisiert, um besser auf Ihre Frage antworten zu können.
Sie können Fragmente auch per Tag mit getFragmentManager().findFragmentByTag("tag")
abrufen. Seien Sie jedoch vorsichtig, wenn die Registerkarte noch nicht angezeigt wurde, wird das Fragment nicht existieren.
Wenn das Fragment die Daten aus der Aktivität ziehen soll, implementieren Sie in Ihrer Aktivität eine Schnittstelle, die durch das Fragment definiert wird. In der Funktion onAttach(Activity activity)
lifecycle für Fragmente erhalten Sie Zugriff auf die Aktivität, die das Fragment erstellt hat, sodass Sie diese Aktivität als von Ihnen definierte Schnittstelle darstellen und Funktionsaufrufe ausführen können. Um dies zu tun, fügen Sie die Schnittstelle in Ihr Fragment ein (Sie können die Schnittstelle auch zu einer eigenen Datei machen, wenn Sie dieselbe Schnittstelle unter vielen Fragmenten teilen wollen):
Dann implementieren Sie die Schnittstelle in Ihrer Aktivität wie folgt:
%Vor% Schließlich können Sie in Ihrer onAttach(Activity activity)
-Methode in CurrentFragment die Aktivität, die Sie als die von Ihnen erstellte Schnittstelle erhalten, umwandeln, damit Sie diese Funktionen aufrufen können.
Tags und Links android android-fragments