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:
class MyFragment: Fragment {
...
companion object {
@JvmStatic
fun newInstance(isMyBoolean: Boolean) = MyFragment().apply {
arguments = Bundle().apply {
putBoolean("REPLACE WITH A STRING CONSTANT", isMyBoolean)
}
}
}
}
.apply
ist ein guter Trick, um Daten festzulegen, wenn ein Objekt erstellt wird oder wie hier angegeben :
Ruft die angegebene Funktion [Block] mit dem this
Wert als Empfänger auf und gibt den this
Wert zurück.
Dann machen Sie in Ihrer Aktivität oder Ihrem Fragment:
val fragment = MyFragment.newInstance(false)
... // transaction stuff happening here
und lesen Sie die Argumente in Ihrem Fragment wie:
private var isMyBoolean = false
override fun onAttach(context: Context?) {
super.onAttach(context)
arguments?.getBoolean("REPLACE WITH A STRING CONSTANT")?.let {
isMyBoolean = it
}
}
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:
(activity as? YourActivityClass)?.callYourFunctionLikeThis(date) // your function will not be called if your Activity is null or is a different Class
Genieße die Magie von Kotlin!