Hasta ahora, en nuestros temas de desarrollo Android, hemos visto que todas las aplicaciones ejecutaban una sola actividad, un solo Activity, y en ella mostraban todos los elementos, o Views, por los que estaba formado. Sin embargo, es posible que en determinadas situaciones nos encontremos con que algún elemento queda mejor representado en otro Activity diferente, o simplemente queramos dotar a nuestra aplicación de funciones adicionales que, hasta ahora, no teníamos.

Android permite que sus aplicaciones estén formadas por varias actividades, tanto independientes como relacionadas (es posible intercambiar parámetros entre ellas), por lo que a la hora de programar es mucho más ordenado, para nosotros y para los usuarios, que cada actividad tenga una finalidad concreta.

En este tema vamos a ver cómo crear una aplicación con dos Activity diferentes y poder cambiar de una a otra mediante un View en forma de botón.

Crear un nuevo proyecto en Android Studio

Al igual que siempre, abriremos nuestro IDE Android Studio y crearemos un nuevo proyecto, llamado “Activities” (o el nombre que le queramos dar). Rellenaremos los datos se la siguiente manera:

  • Name: Activities
  • SDK API 19
  • Empty Activity

El resto de parámetros los podemos dejar por defecto. Una vez termine de cargar el proyecto, lo primero que vamos a hacer es lo básico, es decir, vamos a añadir un View en forma de texto, con lo que queramos, y un botón que ponga “Acerca de” que, más adelante, nos mostrará los créditos de la aplicación. Para ello arrastraremos ambos elementos desde la lista de Views a la actividad y modificaremos sus propiedades para que tome la apariencia que nos guste.

Android Studio - Cambio de actividad - View Activity 1

Una vez tenemos esto hecho, vamos a crear un segundo Activity, el cual mostrará la información de “Acerca De”.

Crear un segundo Activity

Vamos a crear un segundo Activity. Para ello hacemos clic con el botón derecho en la lista de archivos del proyecto, sobre “app” y seleccionamos New > Activity > Empty Activity

Android Studio - Crear un nuevo Activity

Automáticamente se nos va a crear una nueva actividad en nuestro proyecto, a la cual la podemos asignar el nombre que queramos. Ahora ya podemos ver esta segunda actividad.

Android Studio - Nuevo Activity en blanco

Lo único que nos queda por hacer es darla forma con los Views, por ejemplo:

Android Studio - Modificar Views

Android Studio - Cambio de actividad - View Activity 2

Ahora solo nos queda hacer que al pulsar el botón de la primera actividad cargue la segunda donde nos aparezcan los créditos.

Cómo lanzar el segundo Activity desde el primero, y viceversa

Con los Activities ya creados, lo único que nos queda es programar lo que queremos que hagan los Views. En este caso, lo que tenemos que hacer es que al pulsar el botón cargue la otra View que tenemos asociada. Nada del otro mundo.

Debemos escribir código en las dos actividades, en la MainActivity y en la AcercaDe.

Código de la MainActivity

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn = (Button) findViewById(R.id.botonact1);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent (v.getContext(), AcercaDe.class);
                startActivityForResult(intent, 0);
            }
        });
    }
}

Android Studio - Cambio de actividad - Codigo MainActivity

Código del AcercaDe

public class AcercaDe extends AppCompatActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_acercade);

            Button btn2 = (Button) findViewById(R.id.botonact2);
            btn2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent2 = new Intent (v.getContext(), MainActivity.class);
                    startActivityForResult(intent2, 0);
                }
            });
        }
    }

Android Studio - Cambio de actividad - Codigo AcercaDe

El resultado final de la aplicación queda de la siguiente manera:

Android Studio - Cambio de actividad - Act1

Android Studio - Cambio de actividad - Act2

Cómo cambiar de actividad pasándole variables o parámetros

Es posible que en alguna ocasión nos encontremos con la necesidad de pasar variables, parámetros o información de una actividad a otra. Esto se puede hacer de forma sencilla con dos funciones adicionales:

  • putExtra()
  • getExtras()

A continuación vamos a ver cómo pasar parámetros de la actividad 1, llamada por nosotros MainActivity a la segunda actividad, llamada AcercaDe. Lo primero que vamos a hacer, aprovechando para practicar, es escribir un cuadro de introducción de texto donde escribiremos lo que queramos y aparecerá, al cambiar, en la segunda actividad.

Resumen:

  • Creamos un TextField en Activity1
  • Creamos un TextView en Activity 2
  • Utilizamos putExtra() para sacar el contenido de TextField y getExtra para cargar dicho contenido en el TextView.

Vamos a ver. Una vez introducidos tanto el TextField como el TextView, la apariencia de las actividades será similar a la siguiente.

Android Studio - Dos Activity con pase de parámetros - Activity 1

Android Studio - Dos Activity con pase de parámetros - Activity 2

El código fuente de MainActivity será el siguiente:

package es.movilzona.activities;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //Cargamos el texto a exportar
        final EditText textoexportar;
        textoexportar=(EditText)findViewById(R.id.pasarTexto);

        Button btn = (Button) findViewById(R.id.botonact1);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent (v.getContext(), AcercaDe.class);
                //Exportar parametro
                intent.putExtra("frase", textoexportar.getText().toString());
                //
                startActivityForResult(intent, 0);
            }
        });
    }
}

Android Studio - Dos Activity con pase de parámetros - código MainActivity

El código de AcercaDe será el siguiente:

package es.movilzona.activities;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class AcercaDe extends AppCompatActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_acercade);

            //Importamos texto de Act.1
            Bundle bundle = getIntent().getExtras();
            String fraseimportada=bundle.getString("frase");

            String textoPasado = fraseimportada;
            TextView out = (TextView)findViewById(R.id.textoPasado);
            out.setText(textoPasado);

            Button btn2 = (Button) findViewById(R.id.botonact2);
            btn2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent2 = new Intent (v.getContext(), MainActivity.class);
                    startActivityForResult(intent2, 0);
                }
            });
        }
    }

Android Studio - Dos Activity con pase de parámetros - Código AcercaDe

A continuación os dejamos las capturas de la aplicación:

Android Studio - Dos Activity con pase de parámetros

Android Studio - Dos Activity con pase de parámetros 2

Si tienes alguna duda, pásate por el Foro de MovilZona donde hemos creado un post para las consultas al respecto de este tema para el curso de desarrollo Android, como venimos haciendo para cada uno.

Enlaces