Como pasar datos a otra Activity

Objetivo:

Pasar información de una a otra Activity.

Como siempre, tendremos varias alternativas para compartir datos entre las actividades de nuestra aplicación. En este post vamos a tratar una de las más simples: mediante objetos Bundle.

Esta no es la mejor alternativa si deseamos que la información permanezca en un futuro (tras cerrar la aplicación por ejemplo): en ese caso guardarlo en base de datos sería más útil.

Veamos un ejemplo rápido del uso de la clase Bundle. Pasaremos información de una actividad padre a una hija. El código pertenece a Cartelera de Cine, disponible en Android Market, y se pretende pasar la información de una lista de cines y películas de una actividad a otra :

Código fuente java Activity padre:

  //...
  //variables que pasaremos a la activity hija
  private List<Cine> lista_cines;
  private List<Pelicula> lista_peliculas;
  //...
  /**
   * Pasamos dichas variables a la activity hija, llamándola
   */
  public void pasarActividadHija(){
    //preparo la Intent
    Intent itemintent = new Intent(this,activity_hija.class);
    //paso la lista de peliculas y cines
    itemintent.putExtra("lista_peliculas",(Serializable) this.lista_peliculas);
    itemintent.putExtra("lista_cines",(Serializable) this.lista_cines);
    //llamamos a la subactividad
    startActivityForResult(itemintent, 0);
  }

La Activity hija recoge las listas pasadas por la Activity padre. En el método onCreate llamaremos a la función importarInformacion, la cual se encarga de ello:

Código fuente java Activity hija:

//...
private List<Cine> lista_cines;
private List<Pelicula> lista_peliculas;
//...
/**
* importa la info de que le pasa la Actividad padre
*/
public void importarInformacion(){
  Intent startingIntent = getIntent();
  if (startingIntent != null) {
    Bundle b = startingIntent.getBundleExtra("android.intent.extra.INTENT");
    //recibimos la lista de cines
    this.lista_cines = (List<Cine>)getIntent().getSerializableExtra("lista_cines");
    //recibimos la lista de peliculas
    this.lista_peliculas = (List<Pelicula>)getIntent().getSerializableExtra("lista_peliculas");
}

Si lo que deseamos es compartir cadenas de texto, la clase Bundle posee métodos especiales: putString para meter en la instancia del Bundle la cadena (en la Activity padre), y getString para recuperarla (en la Activity hija)

1 comentario en “Como pasar datos a otra Activity

  1. Y como pasar la referencia de una clase:

    Gato cat=new Gato();

    ……
    y en la activity recibirla….

    public void setGato(Gato ca)
    {

    }

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Rellena el captcha please!! *