Android

Validar EditText en Android con setError y un tooltip

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.

Validación de EditText en Android con setError

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

4 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

5 días hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

1 semana hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

4 semanas hace

Esta web usa cookies.