Muchas veces cuando estamos realizando nuestra aplicación Android y tenemos varias actividades,
es necesario que estas se comuniquen entre sí, es decir, necesitamos pasar
información de una actividad a otra.
Para realizar esta comunicación, en la actividad origen tenemos que crear un objeto Intent y a este le añadimos las variables u objetos que queremos
pasar a la actividad destino.
Intent intent
= new Intent(MainActivity.this, ActividadDestino.class);
intent.putExtra("nombre", “empezandoenesto”);
intent.putExtra("edad", 35);
startActivity(intent);
El código anterior como veis es muy simple e intuitivo.
En el constructor del objeto Intent simplemente le pasamos el contexto de la actividad origen MainActivity.this y la actividad que
queremos lanzar ActividadDestino.class (fijaros que le
pasamos el *.class)
Por último lanzamos el Intent
con startActivity(intent);
Si esperamos una
respuesta por parte de ActividadDestino en lugar de lanzar nuestro Intent con startActivity(intent) debemos hacerlo con startActivityForResult(intent, RESULT_CODE)
donde el primer argumento es el Intent
que queremos lanzar y el segundo es un número
entero que lo identifica. Para el ejemplo anterior nos quedaría algo así.
Intent intent
= new Intent(MainActivity.this, ActividadDestino.class);
intent.putExtra("nombre", “empezandoenesto”);
intent.putExtra("edad", 35);
startActivityForResult(intent,
1234);
Para recuperar la información, en la actividad destino, es
necesario crear un objeto Bundle,
para ello recuperamos el Intent que
lanzó la actividad con el método getIntent()
y recuperamos el mapa el mapa de datos de la intención con getExtras()
Bundle extras
= getIntent().getExtras();
String s = extras.getString("nombre");
int i = extras.getInt("edad")
En las siguientes líneas de código, se recuperan las
variables de la intención utilizando uno de los métodos que nos ofrece la clase
Bundle; dependiendo del tipo de la
variable que vamos a recuperar utilizaremos un método u otro. Le pasaremos como
argumento el nombre que le pusimos a la variable en la actividad lanzadora. En
este caso se utilizan los métodos getString()
y getInt()
En el caso de que queramos devolver alguna información a la
actividad origen tenemos que crear un nuevo Intent, pero esta vez la actividad
Intent intent = new Intent();
intent.putExtra("nombre", "empezandoenesto");
setResult(RESULT_OK,
intent);
finish();
Para recuperar la información que nos devuelve la clase ActividadDestino en MainActivity tenemos que sobrescribir
el siguiente método.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1234 && resultCode == Activity.RESULT_OK){
String
nombre = data.getExtras().getString("nombre");
}
}
En la próxima entrada explicaré como se pasan objetos creados por nosotros entre actividades.
No hay comentarios:
Publicar un comentario