Para todos los desarrolladores de Kotlin:
Aquí está la solución propuesta por Android Studio para enviar datos a su Fragmento (= cuando crea un Fragmento en blanco con archivo -> Nuevo -> Fragmento -> Fragmento (en blanco) y marca "incluir métodos de fábrica de fragmentos").
Pon esto en tu Fragmento:
class MyFragment: Fragment {
...
companion object {
@JvmStatic
fun newInstance(isMyBoolean: Boolean) = MyFragment().apply {
arguments = Bundle().apply {
putBoolean("REPLACE WITH A STRING CONSTANT", isMyBoolean)
}
}
}
}
.apply
es un buen truco para establecer datos cuando se crea un objeto, o como dicen aquí :
Llama a la función [bloque] especificada con el this
valor como receptor y devuelve el this
valor.
Luego, en su Actividad o Fragmento, haga lo siguiente:
val fragment = MyFragment.newInstance(false)
... // transaction stuff happening here
y lea los Argumentos en su Fragmento como:
private var isMyBoolean = false
override fun onAttach(context: Context?) {
super.onAttach(context)
arguments?.getBoolean("REPLACE WITH A STRING CONSTANT")?.let {
isMyBoolean = it
}
}
Para "enviar" datos a su Actividad , simplemente defina una función en su Actividad y haga lo siguiente en su Fragmento:
(activity as? YourActivityClass)?.callYourFunctionLikeThis(date) // your function will not be called if your Activity is null or is a different Class
¡Disfruta de la magia de Kotlin!