Ich mache gerade eine Android-App und möchte ein Datum zwischen Aktivität und Fragment übergeben. Meine Aktivität hat eine Schaltfläche, die das Fragment öffnet: DatePickerFragment.
In meiner Aktivität zeige ich ein Datum an, das ich mit dem Fragment ändern möchte. Daher möchte ich das Datum an den Datepicker übergeben und an die Aktivität zurücksenden.
Ich habe viele Lösungen ausprobiert, aber keine funktioniert. Der einfache Weg würde ein Argument übergeben, aber dies kann nicht mit Fragmenten durchgeführt werden.
android
android-fragments
android-activity
Eugene Primako
quelle
quelle
Antworten:
Um Informationen an ein Fragment zu übergeben , legen Sie beim Erstellen Argumente fest und können dieses Argument später über die Methode onCreate oder onCreateView Ihres Fragments abrufen.
In der newInstance-Funktion Ihres Fragments fügen Sie die Argumente hinzu, die Sie an das Fragment senden möchten:
Dann innerhalb des Fragments auf der Methode
onCreate
oderonCreateView
Sie können die Argumente wie folgt abrufen:Wenn Sie jetzt von Ihrem Fragment aus mit Ihrer Aktivität kommunizieren möchten (Senden oder Nicht-Senden von Daten) , müssen Sie Schnittstellen verwenden. Wie Sie dies tun können, wird im Dokumentations-Tutorial zur Kommunikation zwischen Fragmenten sehr gut erklärt. Da alle Fragmente über die Aktivität miteinander kommunizieren, können Sie in diesem Lernprogramm sehen, wie Sie Daten vom tatsächlichen Fragment an seinen Aktivitätscontainer senden können, um diese Daten für die Aktivität zu verwenden, oder an ein anderes Fragment senden können, das Ihre Aktivität enthält.
Dokumentations-Tutorial:
http://developer.android.com/training/basics/fragments/communicating.html
quelle
Senden von Daten von
Activity
an aFragment
Aktivität:
Fragment:
Lesen des Wertes in Fragment
Wenn Sie jedoch Werte von Fragment an Activity senden möchten, lesen Sie die Antwort von jpardogo. Sie benötigen Schnittstellen und weitere Informationen: Kommunikation mit anderen Fragmenten
quelle
Parcelable
aber das gab mirclass cast exception
danke an @ ρяσsρєя K und Terry ... es hilft mir sehr und funktioniert perfekt
Aus Aktivität senden Sie Daten mit der Absicht:
und in der Fragment onCreateView-Methode:
Referenz: Senden Sie Daten von der Aktivität an Fragment in Android
quelle
Verwenden Sie die Bibliothek EventBus, um ein Ereignis zu übergeben, das Ihre Variable enthalten könnte. Es ist eine gute Lösung, da Ihre Aktivitäten und Fragmente lose miteinander verbunden bleiben
https://github.com/greenrobot/EventBus
quelle
Für alle Kotlin-Entwickler da draußen:
Hier ist die von Android Studio vorgeschlagene Lösung zum Senden von Daten an Ihr Fragment (= wenn Sie ein leeres Fragment mit Datei -> Neu -> Fragment -> Fragment (leer) erstellen und "Methoden zur Fragmentfabrik einschließen" aktivieren).
Fügen Sie dies in Ihr Fragment ein:
.apply
ist ein guter Trick, um Daten festzulegen, wenn ein Objekt erstellt wird oder wie hier angegeben :Dann machen Sie in Ihrer Aktivität oder Ihrem Fragment:
und lesen Sie die Argumente in Ihrem Fragment wie:
Um Daten an Ihre Aktivität zurückzusenden , definieren Sie einfach eine Funktion in Ihrer Aktivität und führen Sie die folgenden Schritte in Ihrem Fragment aus:
Genieße die Magie von Kotlin!
quelle
Senden von Daten aus Aktivität in Fragmente, die durch XML verknüpft sind
Wenn Sie in Android Studio ein Fragment mit einer der Vorlagen erstellen, z. B. Datei> Neu> Fragment> Fragment (Liste), wird das Fragment über XML verknüpft. Die newInstance-Methode wird im Fragment erstellt, jedoch nie aufgerufen und kann daher nicht zum Übergeben von Argumenten verwendet werden.
Überschreiben Sie stattdessen in der Aktivität die Methode onAttachFragment
Lesen Sie dann die Argumente in der Methode fragment onCreate gemäß den anderen Antworten
quelle
Sie können Ihr Fragment einfach mit einem Bundle instanziieren:
quelle