¿Texto introducido en campo numérico?

Amazon

Aló,

resulta que hace poco saqué mi chachiaplicación que puse por ahí en MV para Android. Pues bien, resulta que la Play Store te manda información cada vez que a un usuario le crashea la aplicación, y el primer error que me ha llegado me ha dejado flipando.

Os comento: tengo una actividad que tiene un EditText (campo de texto) que está configurado para que sólo puedan introducirse números (android:inputType="number") y en el error pone lo siguiente, ojo:

java.lang.NumberFormatException: unable to parse 'Taxi' as integer
at java.lang.Integer.parse(Integer.java:383)
at java.lang.Integer.parseInt(Integer.java:372)
at java.lang.Integer.parseInt(Integer.java:332)
at com.makedalafela.guaguapp.ParadaActivity$6.run(ParadaActivity.java:284)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4277)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)

Sí, ya sé que el error es porque la aplicación está intentando parsear un string como un entero, pero no es esa mi duda.

Mi duda es, ¿cómo ha podido alguien escribir texto en dicho campo si ni yo mismo puedo hacerlo? (ni copiando y pegando ni con el teclado de voz ni na).

Y también... ¿cómo puedo evitar que esto pase? (que escriban texto xD)

RaymaN

¿Seguro que no se puede introducir texto? Mira que hay miles de móviles Android cada uno con su versión del SO y teclado a cual más raro.

De cualquier forma, valida el campo y listo, no te fíes de que teóricamente solo se pueda introducir números.

1 1 respuesta
Amazon

#2 en teoría saca el teclado numérico, pero sí, creo que voy a tener que hacer que si no es número no haga nada.

Mediante try-catch es muy mangui? xd

1 respuesta
TeRRo90

#3 los try-catch no son mangui :) pero en android no te puedes volver loco. Ya que no tienes el hardware de un PC.

1 respuesta
Amazon

#4 básicamente metí todo el bloque de código que no se tiene que ejecutar en caso de no ser un entero en un try y el catch lo filtré por la excepción de #1, así que no creo que le este pidiendo mucho

1 respuesta
Nucklear

#5
Algo así tambien te debería valer

if( !foo.isNaN() ){
    [Ejecutar codigo]
}
else{
    [Mostrar toast de error o whatever]
}
1

Usuarios habituales

  • Nucklear
  • Amazon
  • TeRRo90
  • RaymaN