contacto[arroba]digitallearning.es

Proyecto con Android Studio: creación de activities y comunicación con Intent

Post Series: Creación de Apps Android: componentes básicos

Siguiendo con nuestros primeros pasos en la creación de una Aplicación Android con el IDE Android Studio, vamos desarrollar un proyecto muy básico, al estilo del típico ‘Hola mundo’ aunque con alguna funcionalidad adicional.

En esta App ejemplo, en vez de utilizar una sola activity que presente dicho mensaje, permitiremos al usuario introducir un texto cualquiera, en un campo EditText de la primera activity,y pulsando un botón (control tipo Button) podrá enviar dicho mensaje como parámetro a una segunda activity, utilizando el componente Intent.

Esta sencilla aplicación, que veremos también en un video en una posterior publicación, estaría formada por las dos pantallas básicas que mostramos a continuación:

Pantalla de la Main Activity de la App
Pantalla de la 2ª activity de la App

Elementos de la aplicación

Vamos a enumerar los elementos necesarios para el desarrollo de este proyecto que denominado “HolaMundo”:

  • Clase MainActivity, que herede de la clase base Activity, y que definirá la lógica del parámetro que se enviará a la siguiente pantalla.
  • Clase MainActivity2, que herede de la clase base Activity, encargada de mostrar el texto introducido en la pantalla principal.
  • Layout main_activity.xml, formado por un control EditText, que permitirá al usuario introducir texto, y un control Button para enviar dicho texto a la siguiente Activity.
  • Layout main_activity2.xml, formado por un control TextView para mostrar el texto introducido por el usuario.

Estructura del proyecto

En la siguiente imagen, se puede apreciar cómo quedaría la estructura de elementos que componen el proyecto que vamos a describir, y que hemos desarrollado con la versión 1.5.1 de Android Studio:

Estructura Proyecto

Descripción del código fuente

Vamos a explicar de forma detallada el código que interviene en el envío de información entre dos activities. Puedes descargar el código completo del proyecto al final de este tutorial.

Nota: aunque lo explicaremos en más profundidad en próximas publicaciones, al tratar del diseño de interfaces de usuarios, comentar brevemente, ya que nos va a parecer en estas explicaciones, que un layout define la estructura visual de una interfaz de usuario, como puede ser la UI  para una Activity o Widget de aplicación.

HolaMundo\app\src\main\java\com\academiaandroid\holamundo\MainActivity.class

Activity que presenta la particularidad de controlar la pulsación del botón definido a nivel de layout, y que enviará el texto introducido a la siguiente pantalla:

Se declaran dos variables de tipo EditText y Button a nivel de clase:

El método onCreate() será llamado cuando se inicie la Activity, por lo que todo lo situado en su interior se inicializará al llamar a dicha Activity:

En la siguiente línea se establecerá la referencia a que layout (interfaz de usuario) se asocia a esta Activity:

Se asignan las referencias a los controles EditText y Button, definidos a nivel de layout, con sus respectivas variables:

Se invoca al método setOnClickListener(), encargado de controlar la pulsación de la vista asociada al botón:

Previamente a la instanciación de la clase Intent, será necesario comprobar que el campo EditText no esté vacío:

A continuación, se instancia la clase Intent, pasándole como parámetros de entrada el contexto (en este caso la Activity actual) y la Activity de destino:

Se invoca al método putExtra(), que almacenará el valor introducido en el campo de texto por clave/valor(clave->”nombre”/valor->edNombre.getText().toString()), para finalmente llamar al método startActivity() que recibe como parámetro la instancia creada, y que lanzará la Activity establecida como segundo parámetro:

En el supuesto de no introducir ningún valor en la caja de texto, se mostrará un mensaje emergente del tipo “Debe indicar los datos requeridos”:

HolaMundo\app\src\main\java\com\academiaandroid\holamundo\MainActivity2.class

Activity encargada de recibir el parámetro enviado por la pantalla anterior. Como se puede apreciar, cada clase utilizada en la Activity deberá ser importada previamente para poder acceder a sus métodos y propiedades:

Clase MainActivity2, que hereda de la clase base Activity, asociada a una ventana de la aplicación:

Se declaran dos variables de tipo Bundle y TextView a nivel de clase:

A continuación, se asigna la referencia del control TextView definido a nivel de layout, con la variable de tipo TextView:

Posteriormente, se asocia a la variable de tipo Bundle, los datos recibidos de la Activity anterior:

Finalmente, se invocará al método append() de la variable de tipo TextView, para mostrar el texto por pantalla:

HolaMundo\app\src\main\res\layout\main_activity.xml

Layout main_activity.xml que define un control EditText (campo de texto editable) donde el usuario podrá introducir texto, y un control Button, que permitirá al usuario interaccionar con la aplicación enviando información a la siguiente Activity:

HolaMundo\app\src\main\res\layout\main_activity2.xml

Layout main_activity2.xml que define un control TextView (vista de texto) que recogerá el valor introducido por el usuario en la pantalla principal:

HolaMundo\app\src\main\AndroidManifest.xml

Archivo AndroidManifest.xml, que define los aspectos generales del proyecto, y dónde se diferencian las siguientes partes:

En las siguientes líneas se definen si se permiten las copias de seguridad, el icono que se mostrará en el launcher del dispositivo, el nombre de la aplicación, si soporta la escritura de derecha a izquierda y el tema de la aplicación:

Se implementa la Activity inicial, indicando en su diferentes atributos el nombre de la clase y de la ventana, y el tema a utilizar:

Permite definir que Activity será lanzada cuando se inicie la aplicación:

Se define una segunda Activity también con los atributos de nombre de la ventana y tema;

 

Descarga del Proyecto

Aquí puedes descargar el proyecto completo para abrirlo en tu equipo:

Descargar

 

This Post Has One Comment

Comments are closed.