11 - Lanzar un segundo "Activity"

Hasta ahora todos los programas han tenido una sola ventana (Activity)

Es muy común que una aplicación tenga más de una ventana. Para implementar esto en Android debemos plantear otros dos archivos uno xml con la interfaz y otro *.kt (Kotlin) con la lógica (tengamos en cuenta que cuando utilizamos Android Studio automáticamente cuando creamos un proyecto nos crea el archivo XML y el código en Kotlin del primer Activity)

Vamos a ver en este concepto los pasos que debemos dar para crear otro Activity y como activarlo desde el Activity principal.

Problema:

Confeccionar un programa que muestre en la ventana principal un botón que al ser presionado muestre otra ventana (Activity) mostrando un TextView con el nombre del programador de la aplicación y un botón para cerrar la ventana o actividad y que vuelva al primer Activity.

1 - Primero creamos un nuevo proyecto que lo llamaremos Proyecto010 y en la ventana principal creamos la siguiente interfaz:

lanzar segundo Activity

Es decir que nosotros queremos que cuando se presione el botón "ACERCA DE" nos abra otra ventana (Activity) y nos muestre el nombre del programador y un botón para cerrar dicha ventana.

2 - Ahora tenemos que crear el segundo Activity. Para esto hacemos clic con el botón derecho del mouse en la ventana de Project donde dice "app" y seleccionamos New -> Activity -> Empty Activity
lanzar segundo Activity

Aparece un diálogo donde debemos definir el nombre del Activity "Activity Name" y le asignaremos como nombre "AcercaDe" (se crearán dos archivos AcercaDe.kt y activity_acerca_de.xml):

lanzar segundo Activity

Ya tenemos los cuatro archivos necesarios para implementar la aplicación:

lanzar segundo Activity

Los dos primeros que se crean cuando iniciamos el proyecto:

  activity_main.xml
  MainActivity.kt

Y estos dos nuevos archivos para la segundo ventana:

  activity_acerca_de.xml
  AcercaDe.kt

Implementamos la interfaz visual del segundo Activity es decir del archivo activity_acerca_de.xml con los siguientes controles:

lanzar segundo Activity

3 - Ahora implementaremos la funcionalidad en la actividad (Activity) principal para que se active la segunda ventana.

El código fuente de la actividad principal queda:

package com.tutorialesprogramacionya.proyecto010

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val boton1=findViewById<Button>(R.id.boton1)
        boton1.setOnClickListener {
            val intento1 = Intent(this, AcercaDe::class.java)
            startActivity(intento1)
        }        
    }
}

Creamos un objeto de la clase Intent y le pasamos como parámetros la referencia del objeto de esta clase (this) y la referencia del otro Activity (AcercaDe::class.java)
Llamamos posteriormente al método startActivity pasando el objeto de la clase Intent (con esto ya tenemos en pantalla la ventana del segundo Activity):

            val intento1 = Intent(this, AcercaDe::class.java)
            startActivity(intento1)

Si ejecutamos el programa podemos ver que cuando presionamos el botón "Acerca De" aparece la segunda ventana donde se muestra el TextView con el valor "Autor : Rodriguez Pablo" y un botón con el texto "salir" (si presionamos este botón no sucede nada, esto debido a que no hemos asociado ningún evento a dicho botón)

El código fuente de la actividad AcercaDe.tk queda:

package com.tutorialesprogramacionya.proyecto010

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button

class AcercaDe : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_acerca_de)

        val botonsalir =findViewById<Button>(R.id.botonsalir)
        botonsalir.setOnClickListener{
            finish()
        }
    }
}

Cuando se presiona el botón salir se ejecuta el método finish() que tiene por objetivo liberar el espacio de memoria de esta actividad y pedir que se muestre la actividad anterior.

Ahora nuestro programa está funcionando completamente:

Primer Activity:

lanzar segundo Activity

Segundo Activity:

lanzar segundo Activity

Este proyecto lo puede descargar en un zip desde este enlace: proyecto010.zip

Problema propuesto

  1. Realizar un programa que contenga dos Activity. En el primero que solicite el ingreso de una clave (control Password) Si ingresa la clave "abc123" activar el segundo Activity mostrando en un TextView un mensaje de bienvenida (mostrar en Toast si se ingresa la clave incorrecta en el primer Activity).
    Llamar al proyecto: Proyecto011.
    En tiempo de ejecución los dos Activity deben mostrarse algo similar a esto:
    lanzar segundo Activity
    lanzar segundo Activity

    Este proyecto lo puede descargar en un zip desde este enlace: proyecto011.zip