2.4 Pasar información entre Activitys

Pasar información de un Activity a otro es muy sencillo y se hace justo cuando vamos a cambiar de uno a otro.

Existen dos formas de hacerlo.

La primera forma (Forma1), la más sencilla, solamente envía las variables y su valor cuando se cambia de un Activity a otro.

Tenemos que insertar el nombre de la variable y el valor que queremos enviar, el nombre de la variable sirve solamente para poder recuperarla en el Activity destino, no cumple otra función (puede ser del mismo nombre que la variable usada en el Activity para no confundirnos).

//Forma 1
Intent i = new Intent(PrincipalActivity.this, SegundoActivity.class);
i.putExtra("Mensaje", Mensaje);
startActivity(i);

Ahora veremos cómo recuperar las variables, para eso es necesario tener una variable con el tipo de dato que necesitemos (String, int, float…) que es donde guardaremos el valor que estamos trasladando.

Mensaje = getIntent().getExtras().getString("Mensaje");
TxtEtiqueta.setText(Mensaje);

La segunda forma (Forma2), un poco más complicada que la anterior, guarda en la memoria del dispositivo las variables y sus valores de la misma forma que las configuraciones de la Aplicación, de manera persistente por medio del objeto SharedPreferences, esto nos ayuda cuando tenemos una variable con un valor al que queremos acceder en cualquier momento en cualquier Activity, sin la necesidad de estar enviando el valor cada vez que cambiemos de Activity.

Con el objeto SharedPreferences creamos un apartado en memoria donde se van a guardar las variables.y de la misma manera que la forma anterior agregamos las variables y sus respectivos valores, cabe aclarar que esto lo podemos hacer en cualquier momento, no es necesario hacerlo justo antes de cambiar de Activity.

//Forma 2
SharedPreferences preferencias = getSharedPreferences("variables", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferencias.edit();
editor.putString("Mensaje", Mensaje);
editor.commit();

Intent i = new Intent(PrincipalActivity.this, TercerActivity.class);
startActivity(i);

Para recuperar el objeto SharedPreferences se hace de la siguiente manera.

SharedPreferences preferencias=getSharedPreferences("variables", Context.MODE_PRIVATE);
Mensaje = preferencias.getString("Mensaje","");
SharedPreferences.Editor editor=preferencias.edit();
editor.remove("Mensaje");
editor.commit();
TxtEtiqueta.setText(Mensaje);

Algo que debemos tener en cuenta es que como las variables son persistentes, cada que estemos seguros de no necesitarla más, debemos eliminarla del objeto SharedPreferences.

editor.remove("Mensaje");

Esta forma de guardar variables es útil si cuando estamos usando nuestra Aplicación y cambiamos a otra, al momento de regresar en el evento OnResume() podemos cargar las variables nuevamente y evitar que haya fugas de información.