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.
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:
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
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):
Ya tenemos los cuatro archivos necesarios para implementar la aplicación:
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:
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:
Segundo Activity:
Este proyecto lo puede descargar en un zip desde este enlace: proyecto010.zip
Este proyecto lo puede descargar en un zip desde este enlace: proyecto011.zip