Curso de Desarrollo Android. Tema 11: Android Studio: Lanzar un segundo Activity desde otro Activity
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.
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
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.
Lo único que nos queda por hacer es darla forma con los Views, por ejemplo:
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); } }); } }
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); } }); } }
El resultado final de la aplicación queda de la siguiente manera:
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.
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); } }); } }
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); } }); } }
A continuación os dejamos las capturas de la aplicación:
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.