Implementar la validación de formularios (Error al editar texto) en Android

En muchas de las aplicaciones de Android ya existentes en lo que respecta a los formularios, donde se incluyen los datos del usuario. Si el usuario ingresa la información incorrecta en los campos de texto o si el usuario deja los campos de texto sin completarlos, existe la necesidad de proporcionar cierta información de alerta a los campos de texto que están vacíos y que contienen información incorrecta. Entonces, en este artículo, se ha discutido paso a paso cómo dar los textos de error al usuario. Eche un vistazo a la siguiente imagen para tener una idea de lo que se debe implementar en esta discusión.

Form Validation in Android

En esta discusión, se toman dos actividades de muestra con fines demostrativos, porque en la primera actividad se implementan los campos de texto. Si todos los datos ingresados ​​en los campos de texto coinciden con los requisitos, el usuario debe continuar con la siguiente actividad.

Pasos para implementar la validación de formularios en Android

Paso 1: crear un proyecto de actividad vacío

Paso 2: Trabajando con activity_main.xml

  • Aquí, en este caso, con fines de demostración, solo se implementan cuatro campos de texto, que son Nombre, Apellido, Correo electrónico y Contraseña.
  • Invoque el siguiente código dentro del archivo activity_main.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity"
    tools:ignore="HardcodedText">
 
    <EditText
        android:id="@+id/firstName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:hint="First Name"
        android:inputType="text" />
 
    <EditText
        android:id="@+id/lastName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:hint="Last Name"
        android:inputType="text" />
 
    <EditText
        android:id="@+id/email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:hint="Email"
        android:inputType="textEmailAddress" />
 
    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:hint="Password"
        android:inputType="textPassword" />
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:gravity="end"
        android:orientation="horizontal">
 
        <Button
            android:id="@+id/cancelButton"
            style="@style/Widget.AppCompat.Button.Borderless"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="4dp"
            android:text="CANCEL"
            android:textColor="@color/colorPrimary" />
 
        <Button
            android:id="@+id/proceedButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="16dp"
            android:backgroundTint="@color/colorPrimary"
            android:text="PROCEED"
            android:textColor="@android:color/white"
            tools:ignore="ButtonStyle" />
 
    </LinearLayout>
</LinearLayout>

Interfaz de usuario de salida: 

Form Validation in Android

Paso 3: crea otra actividad vacía

  • Cree otra actividad vacía con activity_main2.xml e invoque el siguiente código, que contiene un texto simple «Actividad 2» para evitar confusiones.
  • El usuario debe proceder a esta actividad, solo cuando el usuario ingrese los datos correctamente en los campos de texto proporcionados en la primera actividad.

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity2"
    tools:ignore="HardcodedText">
 
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="ACTIVITY 2"
        android:textSize="18sp" />
 
</RelativeLayout>

Paso 4: trabajar con el archivo MainActivity.java

  • Aquí, para la instancia de la clase EditText, se debe llamar a setError() .

Cuando los datos rellenados en el campo de texto son incorrectos ->

// esto da un mensaje de error a un campo de texto en particular  

// que contiene los datos incorrectos.

editText1.setError(“Mensaje de error”); 

    

Cuando los datos del usuario son corregidos por el usuario ->

 // No hay necesidad de dar el mensaje de error cuando el usuario

 // corrige el campo de texto ingresado incorrectamente.

editText1.setError(nulo);

  • Invoque el siguiente código. Se agregan comentarios para una mejor comprensión.

Java

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
 
public class MainActivity extends AppCompatActivity {
 
    // two buttons
    Button bCancel, bProceed;
 
    // four text fields
    EditText etFirstName, etLastName, etEmail, etPassword;
 
    // one boolean variable to check whether all the text fields
      // are filled by the user, properly or not.
    boolean isAllFieldsChecked = false;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        // register buttons with their proper IDs.
        bProceed = findViewById(R.id.proceedButton);
        bCancel = findViewById(R.id.cancelButton);
 
        // register all the EditText fields with their IDs.
        etFirstName = findViewById(R.id.firstName);
        etLastName = findViewById(R.id.lastName);
        etEmail = findViewById(R.id.email);
        etPassword = findViewById(R.id.password);
 
        // handle the PROCEED button
        bProceed.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
                // store the returned value of the dedicated function which checks
                // whether the entered data is valid or if any fields are left blank.
                isAllFieldsChecked = CheckAllFields();
 
                // the boolean variable turns to be true then
                  // only the user must be proceed to the activity2
                if (isAllFieldsChecked) {
                    Intent i = new Intent(MainActivity.this, MainActivity2.class);
                    startActivity(i);
                }
            }
        });
 
        // if user presses the cancel button then close the
          // application or the particular activity.
        bCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MainActivity.this.finish();
                System.exit(0);
            }
        });
    }
 
    // function which checks all the text fields
      // are filled or not by the user.
    // when user clicks on the PROCEED button
      // this function is triggered.
    private boolean CheckAllFields() {
        if (etFirstName.length() == 0) {
            etFirstName.setError("This field is required");
            return false;
        }
 
        if (etLastName.length() == 0) {
            etLastName.setError("This field is required");
            return false;
        }
 
        if (etEmail.length() == 0) {
            etEmail.setError("Email is required");
            return false;
        }
 
        if (etPassword.length() == 0) {
            etPassword.setError("Password is required");
            return false;
        } else if (etPassword.length() < 8) {
            etPassword.setError("Password must be minimum 8 characters");
            return false;
        }
 
          // after all validation return true.
        return true;
    }
}

Salida: ejecutar en el emulador

Publicación traducida automáticamente

Artículo escrito por adityamshidlyali y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *