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

Tramitar acta de nacimiento en línea de manera instantánea

En este post te quiero compartir mi experiencia tramitando un acta de nacimiento de México…

5 horas hace

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

2 semanas hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esta web usa cookies.