Cómo asegurarme de obtener un número entero de un EditText

Tengo este codigo:

EditText value = ( EditText )findViewById( R.id.editbox );
Integer int_value = Integer.valueOf( value.getText().toString() );

Funciona muy bien cuando hay un número en EditText, pero FC mi aplicación cuando está vacía o tiene texto, etc.

¿Cómo puedo asegurarme de que int_value tiene/son un número? También probé parseInt pero con el mismo resultado.

preguntado el 12 de junio de 12 a las 12:06

5 Respuestas

add android:inputType="number" en tu EditText declaración en su archivo xml.

Respondido el 12 de junio de 12 a las 12:06

Esto solo resuelve uno de los problemas. Si EditText está vacío, esto no ayudará en absoluto. - Espen

Si está vacío, ¿cómo obtendrá los valores del texto de edición? - Vineet Shukla

  try {             
Integer int_value  = Integer.parseInt(value.getText().toString());
            } catch (NumberFormatException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        }

Respondido el 12 de junio de 12 a las 12:06

Cuando una cadena que no se puede analizar se sirve como entrada para Integer's valueOf, lanza un NumberFormatException. Simplemente rodéelo con un try catch bloque para manejar tales casos:

Integer int_value = null;

try {
    int_value = Integer.valueOf(value.getText().toString());
} catch (NumberFormatException e) {
    // here you can handle the case where the text wasn't an integer
}

// carry on...

Respondido el 12 de junio de 12 a las 12:06

establezca inputType="number" en xml y compruebe si hay un valor vacío en el código

if(!"".equals(value.getText().trim()) && value.getText().trim()!= null) {

  //sure, input is not empty and is a number.

}

Respondido el 12 de junio de 12 a las 12:06

Prueba con esto

editText.setOnFocusChangeListener(new OnFocusChangeListener(){
                @Override
                public void onFocusChange(View v,boolean hasFocus)
                {
                    //check for emptiness
                    if(editText.length()==0)
                    {
                        editText.setError(error_required);
                    }
                    else if(!numberValidation(editText.getText().toString()))
                    {
                        editText.setError("Only Numbers");
                    }
                }
            }
            );

En main.xml agregar,

EditText tag, android:numeric="integer/number/decimal"

Respondido el 12 de junio de 12 a las 12:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.