Activities. Llamar a otra activity y pasar datos

Submitted by tech4life on

En Android una activity representa una pantalla de nuestra aplicación, en la cual un usuario puede realizar alguna acción. Una activity normalmente se presenta al usuario como una ventana a pantalla completa.

 

Una aplicación consta de diferentes pantallas que estan enlazadas, cada pantalla es una activity.

 

Cada vez que una activity arranca, la anterior se para, y esta nueva activity se pone la primera de la pila, de manera que cuando el usuario vaya hacía atrás, esta activity se sacará de la pila y se visualizará la anterior activity.

 

Para arrancar una activity necesitamos un intent. Un intent es un mensaje asíncrono que podemos utilizar en nuestra activity para realizar una acción o para arrancar una nueva activity y gracias a este objeto pasarle datos.

 

Vamos a verlo en un ejemplo. Vamos a crear un nuevo proyecto desde zero con la plantilla Empty Activity.

Una vez creado el proyecto, en el layout que se ha generado crearemos un botón. Si visualizamos el layout en formato código, dentro del tag del Button añadimos la siguiente linia:

 

android:onClick="mifuncion"

 

Esta línea de código nos indica que nuestro botón tiene un evento onClick , que corresponderá a cuando piquemos en el botón. Entre comillas encontramos el nombre de la función. En este momento nos debería salir subrayado en rojo, indicandonos que la función no existe. Para ello debemos crearla, y nos podemos ayudar de Android Studio para ello. Pondremos nuestro cursor en el nombre de la función y pasaremos el ratón por encima, esperando a que nos salga un mensaje flotante. En él aparecerá un texto de “More Actions” y un atajo de teclado. Si apretáis el atajo de teclado (en mi caso es Alt+Intro) o bien clickáis donde pone “More Actions” se os abrirá un menú, en el que una de las opciones es la de crear la función “mifuncion(View)”. Una vez seleccionada esta opción en nuestra activity se creará la función y nosotros deberemos rellenar el cuerpo de la función.

 

El siguiente paso que tenemos que implementar es la de crear nuestra segunda actividad. Para ello en el árbol del proyecto clicaremos con el botón derecho para que nos aparezca el menú contextual. Una vez aparezca buscaremos la opcion New→Activity→Empty Activity

 

Esta acción abrirá una ventana emergente en la que deberemos seleccionar el nombre de la actividad, e indicarle si queremos que cree un layout, entre otras opciones. Dejaremos todas las opciones por defecto (fijaos bien que el lenguaje sea Java que es con el que trabajaremos). Y en el nombre de la actividad le ponemos “SegundaActivity”.

 

Volvemos a nuestra activity principal y buscamos el punto en el que se ha generado nuestra función. Dentro de ella añadiremos el siguiente código:

Intent intent = new Intent(this, SegundaActivity.class);
intent.putExtra(“MICLAVE”, “VALOR”);
startActivity(intent);

 

Vamos a analizar el código. En la primera línea creamos el objeto Intent, en el que como primer parametro le pasamos el this, es decir la activity en la que estamos, y en el segundo parametro pasamos el class de la activity que queremos ejecutar.

 

Para poder pasar valores, los debemos introducir dentro de ese intent. Para ello utilizaremos la función putExtra. En el primero parametro utilizamos nuestra clave, que será un texto que nosotros queramos, cualquier cosa, pero deberemos utilizar la misma para recuperar estos datos. El segundo parametro es el valor que queremos pasar.

 

Podemos pasar tantos valores distintos como queramos, para ello solo debemos ir añadiendo llamadas a la función putExtra con diferentes claves.

 

Por último ejecutamos la función startActivity con el intent, que será la encargada de abrir la segunda activity.

 

Por último lo que nos falta por realizar es recoger estos datos en nuestra segunda activity. Para ello vamos a nuestro fichero SegundaActivity.java y buscamos la función onCreate. Justo despues de donde realizamos el setContentView añadimos el siguiente código :

Intent intent=getIntent();
String s = intent.getStringExtra(“MICLAVE”);

 

En la primera línea recogemos el intent que hace que se esté ejecutando esta segunda activity. En la siguiente línea es donde recogemos el valor, sobre el intent ejecutamos la función getStringExtra, esta función será diferente en función del tipo de dato que le hayamos pasado, para ello podemos mirar en el propio Android Studio las funciones que nos recomienda. Como parametro le pasamos la clave para obtener el valor, esta clave debe tener el mismo valor que le hemos añadido en la actividad principal.

 

Con esto ya hemos visto de forma sencilla como abrir una segunda activity en nuestra aplicación y como pasar valores de una activity a la otra.

Lenguaje
Nivel