Per tutti gli sviluppatori di Kotlin là fuori:
Ecco la soluzione proposta da Android Studio per inviare dati al tuo frammento (= quando crei un frammento vuoto con File -> Nuovo -> Frammento -> Frammento (vuoto) e controlli "includi metodi di fabbrica frammento").
Metti questo nel tuo frammento:
class MyFragment: Fragment {
...
companion object {
@JvmStatic
fun newInstance(isMyBoolean: Boolean) = MyFragment().apply {
arguments = Bundle().apply {
putBoolean("REPLACE WITH A STRING CONSTANT", isMyBoolean)
}
}
}
}
.apply
è un bel trucco per impostare i dati quando viene creato un oggetto o come indicato qui :
Chiama la funzione specificata [blocco] con this
valore come ricevitore e restituisce this
valore.
Quindi nella tua attività o frammento fai:
val fragment = MyFragment.newInstance(false)
... // transaction stuff happening here
e leggi gli Argomenti nel tuo frammento come:
private var isMyBoolean = false
override fun onAttach(context: Context?) {
super.onAttach(context)
arguments?.getBoolean("REPLACE WITH A STRING CONSTANT")?.let {
isMyBoolean = it
}
}
Per "inviare" i dati alla tua attività , definisci semplicemente una funzione nella tua attività e procedi come segue nel tuo frammento:
(activity as? YourActivityClass)?.callYourFunctionLikeThis(date) // your function will not be called if your Activity is null or is a different Class
Goditi la magia di Kotlin!