Manejo de Activitys

Posted by in Android, Introducción

Como ya se ha explicado, el elemento básico de una aplicación Android es una Activity la cual se puede asociar a una pantalla. Evidentemente una aplicación consta de varias pantallas y el flujo entre ellas marcará la funcionalidad que la aplicación podrá tener. Para poder gestionar este flujo de pantallas existen los intents que me permiten arrancar pantallas de forma simple o esperando un resultado concreto

Para este ejemplo se utilizará dos pantallas:

  • MainActivity junto con su xml correspondiente con un botón
  • SecondActivity junto con su xml correspondiente con un un botón y un EditText

Arrancar una segunda pantalla

Como se ha dicho, para poder arrancar una segunda pantalla existe un intento de acción donde se debe indicar el contexto en el que se encuentra el intento y la clase de la pantalla a la que se quiere acceder. Es importante saber que la segunda pantalla debe estar declarada en el AndroidManifest.xml ya que si no será inaccesible por parte de la compilación. Una vez creado el intent se ejecutará el método startActivity() pasándole como parámetro el intent creado con anterioridad

Al mismo tiempo que se arranca una actividad, también es posible pasar un dato concreto mediante un extra asociado al intent. Para ello el objeto de tipo intent ejecuta el método putExtra() donde se le pasa por parámetros la clase asociada y el dato que se quiere pasar. La clave asociada es la que se utilizará para poder recuperar en dato en la actividad de destino. En el caso de se un objeto complejo se pasará como serializable por lo que la clase que crea el objeto debe implementar dicha interfaz

Para poder recuperar el dato en la actividad destino primero se accede al intent que ha arrancado la actividad y se ejecuta el método getTipoExtra() pasando como parámetro la clave utilizada en el párrafo anterior.

Arrancar segunda pantalla esperando resultado

En algunos casos no es suficiente con arrancar una pantalla, sino que se espera a que la pantalla arrancada procese información y devuelva un dato concreto. Para ello se ejecuta el método startActivityFromResult() al cual se le pasan los parámetros del intent que tiene la acción y un código de petición para poder manejar la respuesta

La segunda actividad es arrancada un procesa los datos correspondientes. En el momento que quiera dar la respuesta se ejecuta el método setResult() al cual se le pasa un código de respuesta para ser procesado y un intento con los datos que formarán la respuesta y justo después se ejecutará el método finish() para que la actividad termine

En este punto la actividad uno vuelve a estar visible y para poder procesar la respuesta debe sobre escribir el método onActivityResult() con los siguientes parámetros:

  • código de petición de salida: el indicado en el intent que ha arrancado la segunda actividad
  • código de petición de entrada: el indicado en el setResult de la segunda actividad
  • intent: los datos que me ha dado la segunda actividad como respuesta

Con todos estos datos se puede evaluar cada uno de los códigos y extraer la información asociada al intent