Android

Android


6.ACTIVIDADES

Página 7 de 25

6.   ACTIVIDADES

6.1.   Uso de Intent para iniciar actividades

Una aplicación Android puede contener varias actividades. Cada actividad es una clase de Java. Para abrir una nueva actividad se define un objeto Intent de la siguiente forma:

Intent intencion=new Intent(this,Actividad2.class);

startActivity(intencion);

La nueva actividad debe declararse en el fichero .manifest de la aplicación mediante:

<activity

  android:name=".Actividad2"

  android:label="Otra actividad">

</activity>

También se pueden pasar datos "extra’’ de una actividad a otra usando el método putExtra():

intencion.putExtra(Actividad2.datoExtra, valor);

donde datoExtra es una variable String definida en la actividad 2. Para acceder a variable String valor desde la actividad 2 se utiliza:

String valor=getIntent().getStringExtra(datoExtra);

Todo esto está ilustrado en el siguiente ejemplo. La actividad principal (Fig. 6.1) tiene un botón para abrir una segunda actividad y le pasa un dato extra que se escribe en pantalla (Fig. 6.2).

Figura 6.1. Actividad con un botón para abrir otra actividad usando Intent.

Figura 6.2. Actividad 2 llamada desde la actividad anterior con un parámetro extra.

Fichero Actividades.java

public class Actividades extends Activity implements

OnClickListener{

    String nombre;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        View boton=findViewById(R.id.button1);

                boton.setOnClickListener(this);

        nombre="Gerardo";

    }

   @Override

   public void onClick(View v) {

      Intent intencion=new Intent(this,Actividad2.class);

      intencion.putExtra(Actividad2.datoExtra, nombre);

      startActivity(intencion);

      Toast.makeText(this,

               "Abriendo la segunda actividad",1).show();

    }

}

Fichero main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:background="#ffffcc"

    >

<TextView

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="Actividad 1"

    android:textColor="#000000"

    android:textSize="24sp"

    />

<Button

    android:text="Abrir actividad 2"

    android:textSize="24sp"

    android:id="@+id/button1"  

    android:layout_width="wrap_content"

    android:layout_height="wrap_content">

    </Button>

</LinearLayout>

Actividad2.java

public class Actividad2 extends Activity{

   public static final String datoExtra="dato1";

   @Override

   public void onCreate(Bundle savedInstanceState){

      super.onCreate(savedInstanceState);

      setContentView(R.layout.actividad2);

      TextView texto=

                (TextView)findViewById(R.id.textView1);

      String nombre=getIntent().getStringExtra("dato1");

      texto.append(nombre);

   }

}

Fichero actividad2.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:background="#ffccff"

    >

<TextView android:text="Bienvenido a la actividad 2, "

    android:id="@+id/textView1"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:textSize="24sp"

    android:textColor="#000000">

</TextView>

</LinearLayout>

6.2.   Pasar valores numéricos entre actividades

En el ejemplo anterior pasamos una variable extra String nombre a la segunda actividad usando putExtra(). También se pueden pasar variables numéricas int, float, double e incluso arrays. Para recuperar estos valores en la segunda actividad hay que usar los métodos getInt(), getFloat(), getDouble() y getDoubleArray(). Por ejemplo, para pasar un array habría que modificar el ejemplo anterior para que incluyera las líneas.

double[] nombre= new double[10];

for(int i=0;i<10;i++) nombre[i]=2*i;

Intent intencion=new Intent(this,Actividad2.class);

intencion.putExtra(Actividad2.datoExtra, nombre);

y para recuperar el array en Actividad2.java pondríamos:

double[] nombre=getIntent().getDoubleArrayExtra("dato1");

for (int i=0;i<10;i++) texto.append("\n"+nombre[i]);

La actividad 2 escribe ahora los valores del array como se ve en la figura 6.3.

Figura 6.3. Actividad 2 llamada desde la actividad anterior

con un array como parámetro extra.

Ir a la siguiente página

Report Page