Buscar en este blog

sábado, 8 de febrero de 2020

Kotlin - Abrir Activity desde un Fragment

Para los que están empezando en la programación para móviles Android en Kotlin, tal vez ya sepan como abrir un Activity desde otro, esto es fácil, pero al intentarlo desde un fragment se encontraron con que no pueden hacerlo de la misma forma, también es fácil, ahora les muestro.

Para abrir un Activity desde otro Activity sabemos que se hace con el siguiente código.

var intent = Intent(this, MyTargetActivity::class.java) startActivity(intent)

Donde...
  • MyTargetActivity es el Activity que queremos abrir.
  • this es la referencia a nuestro activity en el que nos encontramos.

Cuando lo intentamos desde un Fragment, esto cambia, y se debe a que nuestro Fragment hereda de la superclase Fragment y no de la superclase AppCompatActivity, debido a esto se tiene que hacer de la siguiente forma.

var intent = Intent(activity, MyTargetActivity::class.java)
activity!!.startActivity(intent)

Donde...
  • MyTargetActivity es el Activity que queremos abrir.
  • activity es una propiedad de la superclase Fragment que hace referencia al Activity donde se encuentra nuestro Fragment, es decir, hace referencia al Activity contenedor.
Como verán, no podemos llamar directamente al método startActivity, debido a que ese método no se encuentra en la superclase Fragment de la cual heredamos, para esto tenemos que invocarla desde el Activity contenedor del fragment y por esto es que lo hacemos llamando a la propiedad activity.
Esto tambien lo pueden hacer usando el getter correspondiente, quedando de la siguiente manera.

var intent = Intent(getActivity(), MyTargetActivity::class.java) getActivity()!!.startActivity(intent)

Y eso seria todo.
Espero les sea útil.

Leer post completo...