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.
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
- Cree un proyecto de Android Studio de actividad vacío. Y seleccione el lenguaje de programación como JAVA .
- Consulte Android | ¿Cómo crear/comenzar un nuevo proyecto en Android Studio? para saber cómo crear un proyecto de estudio de Android de actividad vacía.
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:
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