21 Agosto, 2012 a las 17:10

Las activitys son el equivalente a las ventanas o formularios de cualquier lenguaje de programación en Windows, además tienen una ventaja frente a estos ya que un programa puede llamar a un determinado formulario de otra aplicación. Por poner un ejemplo claro cuando abrimos la aplicación de Facebook y pulsamos subir foto, la aplicación de Facebook llama al activity de la camara para realizar una nueva fotografía. Además podemos pasar diferentes parámetros a dicha Activity como si llamáramos a una función mas.

En esta entrega aprenderemos a crear nuestros propios activitys y llamar de uno al otro al pulsar un botón, una vez aprendido veremos como pasar un parámetro de un Activity a otro.

Si no has leído aún las entregas anteriores recordar que las tenéis a vuestra disposición:

Abrir un nuevo Activity al pulsar un botón

Para empezar en nuestro activity principal (Nosotros le hemos llamado Juegoactivitys) crearemos un botón, con id btAbrirNuevoActivity que será el encargado de llamar a nuestra segundo Activity. Además crearemos una segunda actividad para ello pulsamos con el botón derecho sobre nuestro proyecto y vamos a Nuevo>Otras>Android Activity y seguimos el asistente, nosotros le hemos dando el nombre de SegundaActivity y le hemos puesto un TextView con id tvHolaMundo.

JugandoActivitys.java

public class JugandoActivitys extends Activity implements OnClickListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_jugando_activitys);

        //Define el boton
        Button boton = (Button) findViewById(R.id.btAbrirNuevoActivity);

        //Asigna el evento onclick al boton
        boton.setOnClickListener(this);
    }

	public void onClick(View v) {
		//Define la actividad
		Intent i = new Intent(this, SegundaActivity.class);

		//Inicia la actividad
		startActivity(i);

	}

}
Fijemonos a partir de la línea 9, justo en esa línea y 12 establece el evento onClick al botón, esto vimos como hacerlo en la entrega número 4 del curso.


Entonces al pulsar el botón se ejecutará la función onClick(), esta función primero declara in Intent.
Los Intent son objetos propios de Android, el concepto es bastante abstracto y la documentación oficial no lo deja claro del todo, pero para que que nos entendamos su única finalidad es poder relacionarse con los diferentes Activitys (abrirlos, cerrarlos, recuperarlos..), una vez lo hemos declarado con new Intent(this, nombre_de_la_clase) nos falta iniciar esta actividad, para ello hacemos uso de la función startActivity(intent); línea 20.

Enviar un parámetro de un activity a otro.

Ahora supongamos que queremos enviar ciertas variables al nuevo activity antes de llamarlo, por ejemplo supongamos que el primer activity pide el nombre del usuario a través de un campo de texto y el segundo debe mostrar ¡Hola Miguel!, siendo Miguel el nombre del usuario.

Lo primero es añadir un campo de texto al Acitivity principal, nosotros le pondremos la id “etNombre”. Posteriormente enviaremos los parametros con un elemento llamado Bundle y las funciones putString y getExtras, como de costumbre voy a poner un ejemplo y explicarlo.

public class JugandoActivitys extends Activity implements OnClickListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_jugando_activitys);

        //Define el boton
        Button boton = (Button) findViewById(R.id.btAbrirNuevoActivity);

        //Asigna el evento onclick al boton
        boton.setOnClickListener(this);
    }

	public void onClick(View v) {
		//Define el campo de texto
		EditText campo_texto = (EditText)findViewById(R.id.etNombre);
		String nombre_usuario = campo_texto.getText().toString();

		//Define el bundle
		Bundle parametros = new Bundle();
		parametros.putString("nombre", nombre_usuario);

		//Define la actividad
		Intent i = new Intent(this, SegundaActivity.class);

		i.putExtras(parametros);

		//Inicia la actividad
		startActivity(i);

	}
}

Lo primero es obtener el texto introducido por el usuario, para ello declaramos el campo de texto y guardamos el contenido en la variable nombre_usuario.

A continuación, en la línea 21 definimos el objeto Bundle en nuestro caso le daremos de nombre “parametros”, este objeto es básicamente un contenedor de parametros y en el deberemos meter todos los parametros que deseemos pasar, para añadir nuevos parámetros se hace de la siguiente forma parametros.putString(“NOMBRE_DEL_PARAMETRO”, VALOR_DEL_PARAMETRO); aparte de putString disponemos de las funciones .putInt, putFloat, etc. para cada tipo de variable.

Por último en la línea 27 asociamos estos parámetros a nuestro intent mediante la función .putExtras(bundle);

Recoger un parámetro desde un Activity

Ahora nos faltaría que SegundoActivity leyera el parámetro que hemos enviado y lo mostrara, para ello definiremos un nuevo objeto bundle que almacenará los diferentes parametros obtenidos.

SegundoActivity.java

public class SegundaActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_segunda);

        Bundle parametros = this.getIntent().getExtras(); //Definimos el contenedor de parametros
        String nombre = parametros.getString("nombre"); //Guardamos el parametro nombre en la variable nombre
        TextView campo_texto = (TextView) findViewById(R.id.tvHolaMundo);
       campo_texto.setText("¡Hola "+nombre+"!"); //Mostramos el texto
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_segunda, menu);
        return true;
    }
}

En la línea 8 definimos el Bundle y le asignamos el valor con la función .getExtras();
Después obtenemos el valor del parámetro “nombre” y lo asignamos a la variable nombre.

Por último solo falta editar el TextView como vimos en la entrega número 3 del curso de programación para android.

Acerca de Miguel Díaz

Informático, enamorado de la programación, diseño Web y el deporte.
Categorías: Android, Programación. Etiquetas: , , , , , , , , .

5 comentarios en Programación en Android para torpes (V) – Creando nuevas ventanas o Activitys

  1.  Oscar Díaz dice:

    Antes que nada quiero agradecerte y felicitarte por tus publicaciones, soy desarrollador de .Net y he decidido incursionar en este “nuevo mundo” para mí, ya que necesito implementar en tablets un sistema de pedidos que lo hice en su momento en el sistema Os Palm. Te molesto pidiendo un consejo sobre que tipo de bases de datos usar, tengo entendido que SQlite funciona bien y podría ser transportable (trabajo en Sql Server 2008), si puedes orientarme con algun link o ni hablar con un tutorial, te lo agradeceria. Saludos.

  2.  Dairon dice:

    Hola, estoy trabajando con pasar datos de una activity hacia otra y he pasado varios parametro dentro de un array de string pero como puedo hacer para pasar un objecto cualquiera es decir un array de Contactos (donde Contactos es un Array de la class Contacto).

  3.  carlos dice:

    excelente me has salvado gracias!!!!!

  4.  Rachel dice:

    Muchísimas gracias por tu aporte!

  5.  Jafet dice:

    yo quiero hacer lo mismo pero pasando la seleccion de un radiobuttons a la otra activity :(

Deja un comentario

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