Taller de Desarrollo Móvil en Android

Ingeniería de Software y Sistemas Computacionales | La Salle Nezahualcóyotl

Práctica 2: Interfaz de Usuario e Intents Explícitos

Objetivo: Diseñar una interfaz funcional de acceso, capturar datos de usuario y transferirlos a una nueva Activity mediante el uso de objetos Intent.

Nota: Esta práctica es incremental. Continuaremos trabajando sobre el proyecto Laboratorio1_CicloVida.

1. Rediseño de la Interfaz Principal (XML)

📍 Ruta: app > res > layout > activity_main.xml
<EditText
    android:id="@+id/etNombre"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:hint="Ingresa tu nombre de usuario"
    android:inputType="textPersonName"
    android:layout_margin="32dp"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent" />

<Button
    android:id="@+id/btnEnviar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Ingresar al Sistema"
    android:backgroundTint="#002b5c"
    android:layout_marginTop="24dp"
    app:layout_constraintTop_toBottomOf="@id/etNombre"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent" />

2. Creación de la Segunda Actividad (HomeActivity)

  1. En el panel Android, busca la carpeta: app.
  2. Clic derecho sobre la carpeta del paquete (dentro de java) > New > Activity > Empty Views Activity.
  3. Activity Name: HomeActivity
  4. Clic en Finish.
📍 Ruta: app > res > layout > activity_home.xml
<TextView
    android:id="@+id/tvMensaje"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Bienvenido Usuario"
    android:textSize="24sp"
    android:textStyle="bold"
    android:textColor="#002b5c"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

3. Lógica de Comunicación (Kotlin)

📍 Archivo: MainActivity.kt
botonEnviar.setOnClickListener {
    val nombreUsuario = campoNombre.text.toString()
    val pasarPantalla = Intent(this, HomeActivity::class.java)
    pasarPantalla.putExtra("DATO_NOMBRE", nombreUsuario)
    startActivity(pasarPantalla)
}
📍 Archivo: HomeActivity.kt
val nombreRecibido = intent.getStringExtra("DATO_NOMBRE")
val txtMensaje = findViewById<TextView>(R.id.tvMensaje)
txtMensaje.text = "Bienvenido: $nombreRecibido"

Reflexión Crítica y Análisis

Como Ingeniero de Software, analiza y responde las siguientes cuestiones basándote en la ejecución de tu práctica:

Persistencia Temporal: Si el usuario escribe su nombre, navega a la segunda pantalla y luego presiona el botón "Atrás" del sistema, ¿el nombre sigue escrito en el formulario? Explica por qué sucede esto con base en el Ciclo de Vida.
Seguridad de Tipos: ¿Qué sucede si intentas recuperar el dato con un método incorrecto (ej. getIntExtra) en lugar de getStringExtra? ¿El IDE te marca error antes de ejecutar?
Gestión de Memoria: Al usar startActivity(), ¿la primera Activity se destruye de la memoria RAM o permanece en un estado latente? Argumenta tu respuesta revisando el Logcat.
Validación de Software: ¿Qué medidas de control de flujo implementarías para evitar que la aplicación navegue a la segunda pantalla si el EditText está vacío o contiene solo espacios?