Han pasado los años y Android ha evolucionado muchísimo, tanto en velocidad, seguridad y novedades; pero una cosa que también ha cambiado y mejorado es el soporte para desarrolladores.
En este post voy a explicar cómo validar un valor que obtenemos de un campo de texto o EditText de Android, pero de una forma bonita como se ve en la captura.
Validar el valor de un EditText de Android de esta forma (usando setError
) ofrece una mejor manera de indicarle al usuario que un dato no es válido con un tooltip. Veamos entonces cómo validar lo que el usuario escribe.
No será la gran cosa, y no es algo difícil; pero le da un toque a nuestras apps.
Descargar aplicación y código
El código es totalmente open source y puedes verlo en el repositorio. La APK para probar puedes descargarla en la sección de releases.
Validar EditText de Android
En este ejemplo validaremos que no sea una cadena vacía y que sea un número mayor o igual a 5 y menor o igual a 60. Primero declaramos nuestro EditText
con id etNumero
y le asignamos su valor de la vista con findViewById
.
También necesitamos un botón, que será el que realizará la validación. Lo declaramos con Button
, le ponemos el id btnOk
y listo.
La validación viene en el click del botón:
// Agregar listener al botón
btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Quitamos los errores
etNumero.setError(null);
String posibleNumero = etNumero.getText().toString();
// Vemos si está vacío...
// Notación yoda: https://parzibyte.me/blog/2018/09/24/notacion-yoda-en-programacion/
if ("".equals(posibleNumero)) {
// Primer error
etNumero.setError("Introduce un número");
// Le damos focus
etNumero.requestFocus();
// Y terminamos la ejecución
return;
}
// En caso de que hayan puesto algo, convertimos a entero
int numero = Integer.parseInt(posibleNumero);
// Comparar si está en el rango
if (numero >= 5 && numero <= 60) {
// La validación termina y hacemos lo que vayamos a hacer
Toast.makeText(MainActivity.this, "Todo correcto", Toast.LENGTH_SHORT).show();
} else {
// Si no, entonces indicamos el error y damos focus
etNumero.setError("Número fuera de rango");
etNumero.requestFocus();
}
}
});
Nota: ese fragmento es tomado del repositorio, no creas que es distinto. Si quieres ver todo el código de la MainActivity lo dejo aquí; recuerda que solamente puse el código que realiza la validación.
Aunque se ve un poco largo, solamente estamos trabajando con setError
. Al presionar el botón se eliminan los errores con setError(null);
, después de ello obtenemos el valor y lo comparamos con una cadena vacía usando algo como la notación Yoda.
En caso de que el valor esté vacío, es decir, que no se haya introducido nada, entonces mostramos el primer error con setError(mensaje)
.
Luego de eso, en caso de que no sea una cadena vacía, la convertimos a un entero con Integer.parseInt
y comprobamos su rango.
Si está dentro del rango mostramos un simple Toast, aunque en la vida real significa que el número está validado. En caso de que no, mostramos otro error.
Conclusiones
Esto fue un ejemplo muy sencillo y fácil, pero nos da un panorama de lo que podemos alcanzar con setError. De esta manera podemos validar cosa por cosa, pasar por distintos escenarios e indicar que un campo está mal rellenado.
Cabe mencionar que setError
podría aceptar un segundo parámetro que indica el icono que se pondrá con el aviso, pero eso lo dejamos para otro post.
Recuerda, siempre puedes ver más sobre Android y también leer más tutoriales sobre Java.
Hola, hay una posibilidad de ver este mismo ejemplo pero en el caso de que sea más de 1 campo que hay que validar