Pour tous les développeurs Kotlin :
Voici la solution proposée par Android Studio pour envoyer des données à votre Fragment (= lorsque vous créez un fragment vierge avec File -> New -> Fragment -> Fragment(Blank) et que vous cochez "include fragment factory methods").
Mettez ça dans votre Fragment :
class MyFragment: Fragment {
...
companion object {
@JvmStatic
fun newInstance(isMyBoolean: Boolean) = MyFragment().apply {
arguments = Bundle().apply {
putBoolean("REPLACE WITH A STRING CONSTANT", isMyBoolean)
}
}
}
}
.apply
est une astuce intéressante pour définir les données lors de la création d'un objet, ou lorsque l'option ils déclarent ici :
Appelle la fonction [bloc] spécifiée avec this
comme son récepteur et renvoie this
valeur.
Ensuite, dans votre Activité ou Fragment, faites :
val fragment = MyFragment.newInstance(false)
... // transaction stuff happening here
et lisez les arguments de votre fragment tels que :
private var isMyBoolean = false
override fun onAttach(context: Context?) {
super.onAttach(context)
arguments?.getBoolean("REPLACE WITH A STRING CONSTANT")?.let {
isMyBoolean = it
}
}
Pour "renvoyer" les données à votre activité Pour cela, il suffit de définir une fonction dans votre activité et d'effectuer les opérations suivantes dans votre fragment :
(activity as? YourActivityClass)?.callYourFunctionLikeThis(date) // your function will not be called if your Activity is null or is a different Class
Profitez de la magie de Kotlin !