-
Intents explicitos
Intercambiar informacin entre dos actividades
2. Vamos a agregar una actividad adicional, dando clic derecho
sobre el paquete
principal del directorio src, eligiendo la opcin New > Class
y nombramos a la nueva
actividad como ActivitySecundaria. En mi caso, estas son las dos
actividades que
manipular:
El objetivo es que IntentExplicitoActivity llame a
ActivitySecundaria a travs de un
intent. La segunda actividad recibir la informacin de la primera
haciendo uso de la
clase Bundle por medio del mtodo intent.getExtras().
3. Definimos el layout que presentar IntentExplicitoActivity,
creando un nuevo archivo
llamado first.xml dentro del directorio res > layout. A
continuacin te comparto el contenido
que deber tener este archivo:
4. Ahora, diseamos el layout para la segunda actividad que
consiste principalmente en dos
campos de texto en dnde se recuperarn los dos valores pasados
desde la actividad principal
y un botn que nos permita regresar a la primera actividad.
-
5. Ya teniendo la estructura visual, pasemos a escribir el cdigo
que ir en cada una de
las actividad. Empecemos con IntentExplicitoActivity,java cuyo
contenido te presento a
continuacin:
-
El mtodo onClick() del botn ser el encargado de mandar un objeto
de tipo Intent
hacia la actividad ActivitySecundaria que se define como segundo
parmetro en el
constructor a la hora de crearlo. Despus, con ayuda de
putExtra() pasamos cada uno de
los valores que queremos que reciba la actividad dos. Este mtodo
recibe como primer
parmetro una key que se utiliza en la segunda actividad para
recuperar la informacin,
que corresponde al segundo parmetro.
Como en este caso, el flujo del demo es que despus de recibir la
informacin en la
actividad dos, podamos regresar a la actividad 1 y desplegar
algn mensaje de respuesta
llamamos al mtodo startActivityForResult(). En caso de que no
esperramos alguna
repuesta de la actividad secundaria, nicamente utilizaramos el
mtodo startActivity().
Por ltimo, para que podamos recibir satisfactoriamente la
respuesta de la actividad
secundaria, sobreescribimos el mtodo onActivityResult() que se
utiliza para recuperar
un cdigo de respuesta y desplegar un mensaje que corresponde a
la informacin extra
de un Intent de vuelta. El mtodo onActivityResult() recibe como
primer parmetro un
requestCode que es un identificador que se defini lneas arriba
en la actividad principal
y que nos sirve para diferenciar qu Intent y qu actividad es la
que se llam. El
segundo parmetro es un resultCode que se define en la actividad
secundaria. Puede
tomar el valor de RESULT_OK en caso de que todo haya ido bien al
momento de
procesar la informacin; o RESULT_CANCELED si de forma explcita
la actividad lo
-
define, si la actividad no ha obtenido algn resultado o si algo
fall durante procesaba la
informacin pasada por la actividad principal.
6. Ahora, escribimos el siguiente cdigo en la actividad
ActivitySecundaria:
Dentro del mtodo onCreate() creamos un objeto de tipo Bundle que
se inicializa
cuando recuperamos el Intent y la informacin que contiene.
Almacenamos en dos
variables de tipo String cada uno de los valores que mandamos en
la actividad 1. Para
ello utilizamos el objeto extra y llamamos al mtodo getString()
pasando como
parmetro la key de cada valor, tal y como hacemos cuando
trabajamos con colecciones
en Java. Si los valores no son nulos los desplegaremos en los
dos EditText que
definimos en el paso cuatro.
Por ltimo, como la intencin es que regresemos a la actividad
principal, le asignamos
el mtodo finish() al onClick() del botn. El mtodo finish() se
sobreescribe para crear
-
un Intent que lleva dos valores y que se pasa a travs del mtodo
setResult() que es el
que permitir que la actividad 1 pueda recuperar un mensaje de
respuesta y desplegarlo
en pantalla. En el primer parmetro de setResult() es donde se
define el valor
RESULT_OK o RESULT_CANCELED dependiendo de lo que pase durante
el
procesamiento de la informacin. En este demo no estamos
realizando algo del otro
mundo por lo que de forma explcita definimos el valor RESULT_OK.
En escenarios
reales, este parmetro puede estar condicionado por muchas otras
acciones que la
aplicacin necesite.
7. Por ltimo, para que podamos ejecutar el ejemplo ser necesario
registrar la segunda
actividad dentro del archivo AndroidManifest.xml:
8. Ejecuta el ejemplo y observa cmo es que fluye la informacin
entre las actividades.
Modifica el cdigo para hacer ms pruebas y para poder hacer cosas
ms complejas y
ms apegadas a lo que quieras hacer en tus aplicaciones.
Actividad principal
-
Actividad secundaria