En aquest tema, aprendrem com gestionar l'entrada de l'usuari en una aplicació Android. Això inclou la captura de dades des de components de la interfície d'usuari com EditText, la gestió d'esdeveniments de clic en botons i la validació de les dades introduïdes per l'usuari.

Objectius

  • Comprendre com capturar l'entrada de l'usuari des de components de la interfície d'usuari.
  • Aprendre a gestionar esdeveniments de clic en botons.
  • Implementar la validació de dades d'entrada.

Components Clau

  1. EditText: Un component de la interfície d'usuari que permet a l'usuari introduir text.
  2. Button: Un component de la interfície d'usuari que permet a l'usuari iniciar una acció.
  3. TextView: Un component de la interfície d'usuari que mostra text a la pantalla.

Captura de l'Entrada de l'Usuari

Exemple Pràctic

  1. Creació del Layout XML
<!-- res/layout/activity_main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <EditText
        android:id="@+id/editTextUserInput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Introdueix el teu nom" />

    <Button
        android:id="@+id/buttonSubmit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Enviar" />

    <TextView
        android:id="@+id/textViewResult"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text=""
        android:paddingTop="16dp" />
</LinearLayout>
  1. Gestió de l'Entrada en el Codi Java/Kotlin
// src/main/java/com/example/myapplication/MainActivity.kt
package com.example.myapplication

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

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val editTextUserInput = findViewById<EditText>(R.id.editTextUserInput)
        val buttonSubmit = findViewById<Button>(R.id.buttonSubmit)
        val textViewResult = findViewById<TextView>(R.id.textViewResult)

        buttonSubmit.setOnClickListener {
            val userInput = editTextUserInput.text.toString()
            textViewResult.text = "Hola, $userInput!"
        }
    }
}

Explicació del Codi

  • EditText: Utilitzem findViewById per obtenir una referència al component EditText i capturar el text introduït per l'usuari amb editTextUserInput.text.toString().
  • Button: Configurem un OnClickListener per al botó que captura l'entrada de l'usuari quan es fa clic.
  • TextView: Actualitzem el text del TextView per mostrar un missatge personalitzat amb l'entrada de l'usuari.

Validació de Dades d'Entrada

Exemple de Validació

buttonSubmit.setOnClickListener {
    val userInput = editTextUserInput.text.toString()
    if (userInput.isEmpty()) {
        editTextUserInput.error = "El nom no pot estar buit"
    } else {
        textViewResult.text = "Hola, $userInput!"
    }
}

Explicació del Codi

  • Validació: Comprovem si l'entrada de l'usuari està buida. Si ho està, mostrem un missatge d'error utilitzant editTextUserInput.error.

Exercicis Pràctics

Exercici 1: Captura de l'Entrada de l'Usuari

Crea una aplicació que permeti a l'usuari introduir el seu correu electrònic i mostri un missatge de benvinguda amb el correu introduït.

Exercici 2: Validació de l'Entrada de l'Usuari

Amplia l'exercici anterior per validar que el camp de correu electrònic no estigui buit i que contingui un símbol '@'.

Solucions

Exercici 1

<!-- res/layout/activity_main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <EditText
        android:id="@+id/editTextEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Introdueix el teu correu electrònic" />

    <Button
        android:id="@+id/buttonSubmit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Enviar" />

    <TextView
        android:id="@+id/textViewResult"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text=""
        android:paddingTop="16dp" />
</LinearLayout>
// src/main/java/com/example/myapplication/MainActivity.kt
package com.example.myapplication

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

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val editTextEmail = findViewById<EditText>(R.id.editTextEmail)
        val buttonSubmit = findViewById<Button>(R.id.buttonSubmit)
        val textViewResult = findViewById<TextView>(R.id.textViewResult)

        buttonSubmit.setOnClickListener {
            val email = editTextEmail.text.toString()
            textViewResult.text = "Benvingut, $email!"
        }
    }
}

Exercici 2

buttonSubmit.setOnClickListener {
    val email = editTextEmail.text.toString()
    if (email.isEmpty()) {
        editTextEmail.error = "El correu electrònic no pot estar buit"
    } else if (!email.contains("@")) {
        editTextEmail.error = "El correu electrònic ha de contenir un '@'"
    } else {
        textViewResult.text = "Benvingut, $email!"
    }
}

Resum

En aquesta secció, hem après com capturar l'entrada de l'usuari utilitzant components de la interfície d'usuari com EditText i Button. També hem vist com gestionar esdeveniments de clic i com validar les dades d'entrada per assegurar-nos que compleixen certs criteris. Aquestes habilitats són fonamentals per crear aplicacions Android interactives i robustes.

© Copyright 2024. Tots els drets reservats