Como validar el tipo de dato que se eescribe en un editText

14,045 views
Skip to first unread message

Yesid Lazaro

unread,
May 2, 2011, 5:56:02 PM5/2/11
to desarrollad...@googlegroups.com
saludos , quisiera saber como validar la entrada de informacion en los textview, es decir hacer que solo se pueda escribir numeros o letras

gracias y espero pronta respuesta

Breogán González Fernández

unread,
May 2, 2011, 6:06:45 PM5/2/11
to desarrollad...@googlegroups.com

Me imagino que te refieres a la entrada de datos mediante un EditText..pues mira, es tan facil como declarar el tipo de dato en la declaracion del xml del EditText,por ejemplo para solo numero pones android:number y listo,o password pones android:password...busca mas informacion en google developers.

> --
> Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
> Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.
>

Yesid Lazaro

unread,
May 2, 2011, 6:11:03 PM5/2/11
to desarrollad...@googlegroups.com
gracias man , saludos desde colombia

Leandro Spadaro

unread,
Dec 21, 2012, 6:35:04 AM12/21/12
to Java android
De esta forma lo podes hacer por código, si no es un numero la clase el método valueOf lanza NumberFormatException 
capturas el error por catch y realizas laguna acción.

String numero = "Soy un numero"
double = 0.0;
try{
 retorno = Double.valueOf(numero);
}catch(NumberFormatException e){
  throw new TuException ("El valor indicado no es un número");
}

Otra cosa que podrías hacer es recorrer la cadena del EditText y recorrerlo,  fijarse que los valores sean numéricos algo como lo
que explican en este link:


Date: Thu, 20 Dec 2012 11:46:33 -0800
From: pet...@gmail.com
To: desarrollad...@googlegroups.com
Subject: Re: [desarrolladores-android.com] Como validar el tipo de dato que se eescribe en un editText

Y si en lugar de restringirlo para q acepte solo numeros en el xml lo quiero restringir con codigo java como se hace espero me puedas ayudar ya andube buscando y no encuentro nada.


El lunes, 2 de mayo de 2011 17:06:45 UTC-5, breogangf escribió:
Me imagino que te refieres a la entrada de datos mediante un EditText..pues mira, es tan facil como declarar el tipo de dato en la declaracion del xml del EditText,por ejemplo para solo numero pones android:number y listo,o password pones android:password...busca mas informacion en google developers.
El 02/05/2011 23:56, "Yesid Lazaro" <lazaro...@gmail.com> escribió:
> saludos , quisiera saber como validar la entrada de informacion en los
> textview, es decir hacer que solo se pueda escribir numeros o letras
>
> gracias y espero pronta respuesta
>
> --
> Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-android+unsub...@googlegroups.com

> Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.
>

--
Para participar es necesario que leas detenidamente las normas del grupo: http://goo.gl/AmNsS
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para ver este debate en la Web, visita https://groups.google.com/d/msg/desarrolladores-android/-/N2lOQ4w63PMJ.
 
 

Leandro Spadaro

unread,
Dec 22, 2012, 10:10:31 AM12/22/12
to Java android
Te dejo el código que hice, por que estoy en algo similar en una aplicación.

Cuando ingresan un valor en un EdiText se valida que sea un número, y mediante 
un boolean le podes especificar si admite valores negativos. 

La validación se realiza en una método static para que puedas invocarlo de cualquier parte de la aplicación
si es que necesitas validar no solo los valores ingresados en un EditText. 

Si el valor ingresado no es correcto el método lanza una UtilException cuando la capturas puedes
si quieres mostrar el mensaje por pantalla o simplemente no hacer nada. 

Espero te de una idea, seguramente se puede mejorar pero es una idea como para ver como se puede
realizar.

Saludos.
Leandro.


editText = (EditText) alertDialog.findViewById(R.id.editTextValor);
editText .addTextChangedListener(new TextWatcher() {
 @Override
 public void onTextChanged(CharSequence s, int start, int before, int count) {}

  @Override
  public void beforeTextChanged(CharSequence s, int start, int count,int after) {}

  @Override
  public void afterTextChanged(Editable s) {
     String valor= editText .getText().toString();
     try{
  Util.esNumero(valor, 5, 1, false);
     }catch(UtilException e){
if(valor.length() != 0){  
   editText .getText().delete(valor.length() - 1, valor.length());
 }
     }
 }
});

public class Util{

 public static double esNumero(String valor, long cantidadDeEnteros, long cantidadDeDecimales, boolean admiteSignoNegativo)throws UtilException{
try{
double retorno = 0.0;
//Valido que el valor no este en blanco
if (valor == null || valor.trim().length() == 0)
throw new UtilException ("Debe indicar el valor");
//Valido que si ingresaron un punto, no sea el primer valor
if (valor.indexOf(".") != -1 && (valor.length() == 1)){
throw new UtilException ("Debe indicar la cantidad de enteros y dedcimales. Ej.: 3.5"); 
}
//En caso que el valor ingresado en la primera posición sea el signo menos asigno
//-0 para que no de error por no ser numero.
if (valor.equals("-") && (valor.length() == 1))
 valor = "-0";
//Valido que no sea un número
try{
retorno = Double.valueOf(valor);
}catch(NumberFormatException e){
//retorno = 0.0
throw new UtilException ("El valor no es válido");
}
//Valido que no sea un valor menor a cero
if (admiteSignoNegativo == false){
if (retorno < 0.0)
throw new UtilException ("El valor no puede ser negativo");
}
    //Valido la cantidad de enteros y decimales. Para saber si existen
    //decimales busco el punto decimal. En caso que el punto decimal no
    //este es por que no existen decimales.
   if (valor.indexOf(".") != -1){
    
    //Valido la cantidad de enteros
    if (cantidadDeEnteros == 0)
   throw new UtilException ("El valor no permite decimales.");
    
    //Valido la cantidad de decimales
    if (cantidadDeDecimales == 0)
    throw new UtilException ("El valor no permite decimales.");
    
   
    //Si la longitud es uno significa que ingreso solo el punto. Si es
    //distinta de uno asumo que ingreso enteros y decimales.
    if (valor.length() != 1){
     
 int cantidadEntero = valor.substring(0, valor.indexOf(".")).length();
 int cantidadDecimales = valor.substring(valor.indexOf(".") + 1, valor.length()).length();
 if (cantidadEntero > cantidadDeEnteros){
 
String ent = "enteros";
   if (String.valueOf(cantidadEntero).length() == 1)
     ent = " entero";  
   
throw new UtilException ("El valor debe tener "+ cantidadDeEnteros + ent);
 }
 if (cantidadDecimales > cantidadDeDecimales){
 
String dec =" decimales";  
if (String.valueOf(cantidadDecimales).length() == 1)
dec = " decimal";
 
throw new UtilException ("El valor debe tener "+ cantidadDeDecimales + dec);
 }
 
    }
 
   }else{
   
     int cantidadEntero = valor.length();
     
     if (cantidadEntero > cantidadDeEnteros){
   
    String ent = "enteros";
    if (String.valueOf(cantidadEntero).length() == 1)
     ent = " entero";
     
throw new UtilException ("El valor debe tener "+ cantidadDeEnteros + ent);
     }
   }
   
return retorno;
}catch(UtilException e){
throw e;
}catch(Exception e){
throw new UtilException ("Error de sistema");
}
}
}

public class UtilException extends Exception{

public UtilException() {
    }

    public UtilException(String msg) {
        super(msg);
    }
}




From: leo_s...@hotmail.com
To: desarrollad...@googlegroups.com
Subject: RE: [desarrolladores-android.com] Como validar el tipo de dato que se eescribe en un editText
Date: Fri, 21 Dec 2012 08:35:04 -0300

Victor Machorro Velazquez

unread,
Dec 22, 2012, 3:41:38 PM12/22/12
to desarrollad...@googlegroups.com
Gracias amigo ne verdad gracias por tomarte el tiempo para contestarme en realidad lo que buscaba era que al seleccionar el editText para ingresar datos en el teclado del telefono solo se le mostrara solo el teclado numerico para que no pueda metar caracteres pero pues como me sugieres tu tambien es correcto. de nuevo gracias

kevin

unread,
Apr 3, 2014, 12:01:34 PM4/3/14
to desarrollad...@googlegroups.com
Hola, tendras un link donde expliquen mejor los tipos de datos que se pueden unsar en la declaracion del xml?


On Monday, May 2, 2011 5:06:45 PM UTC-5, breogangf wrote:

Me imagino que te refieres a la entrada de datos mediante un EditText..pues mira, es tan facil como declarar el tipo de dato en la declaracion del xml del EditText,por ejemplo para solo numero pones android:number y listo,o password pones android:password...busca mas informacion en google developers.

El 02/05/2011 23:56, "Yesid Lazaro" <lazaro...@gmail.com> escribió:
> saludos , quisiera saber como validar la entrada de informacion en los
> textview, es decir hacer que solo se pueda escribir numeros o letras
>
> gracias y espero pronta respuesta
>
> --
> Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-android+unsub...@googlegroups.com

Juan de Dios Maldonado Sánchez

unread,
Apr 3, 2014, 12:14:59 PM4/3/14
to desarrollad...@googlegroups.com


--
Para participar es necesario que leas detenidamente las normas del grupo: http://goo.gl/8h8ez2
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/desarrolladores-android.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/desarrolladores-android/fa85ba21-b721-4105-9e3f-2ad81eef545a%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages