Como pasar datos a otra Activity

31 octubre, 2011 por Gonzalo de Córdoba Dejar una respuesta »

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)

Publicidad

1 comentario

  1. Evelyn Ortega Neri dice:

    Y como pasar la referencia de una clase:

    Gato cat=new Gato();

    ……
    y en la activity recibirla….

    public void setGato(Gato ca)
    {

    }

Deja un comentario

Rellena el captcha please!! *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies