Error NumberFormatException
El código es:
editText2=(EditText) findViewById(R.id.editText2); editText3=(EditText) findViewById(R.id.editText3); float from_value= Float.parseFloat(editText2.getText().toString()); editText3.setText(" "+(from_value * 100.0));
Y el error logcat es:
- FirebaseApp con nombre no existe
- Android studio no puede encontrar el símbolo "Actividad"
- Cómo pasar los datos del servlet a la aplicación android
- Parada de la conexión del proxy de medios de Android
- No se puede crear el controlador dentro de hilo que no ha llamado Looper.prepare () dentro de AsyncTask para ProgressDialog
03-18 03: 19: 07.847: E / AndroidRuntime (875): Causado por: java.lang.NumberFormatException: Float inválido: ""
- Compruebe si DAY_OF_WEEK es entre el lunes y el viernes
- SharedPreferences no funciona en todas las actividades
- Proguard eliminando anotaciones en la aplicación de Android
- Conexión larga de sondeo TCP de Android
- Listener for Done botón en EditText?
- Obtención de datos de lista de elementos de una lista
- Cómo convertir InputStream en origen?
- ¿Cuál es el mejor protocolo de comunicación de cliente de servidor para usar en Android e iOS?
Parece que la cadena en editText2 está vacía, por lo que no puede analizarla como float.
Una posible solución es comprobar si la cadena está vacía en primer lugar, y luego decidir sobre el valor predeterminado, otro es capturar la excepción:
float from_value; try { from_value = Float.parseFloat(editText2.getText().toString()); } catch(NumberFormatException ex) { from_value = 0.0; // default ?? }
Usted debe tratar de evitar el uso de try / catch si es posible porque no es el método preferido.
La forma correcta de evitar este error es detenerlo antes de que suceda.
if (mEditText.getText().toString().equals("")) { value = 0f; } else { value = Float.parseFloat(mEditText.getText().toString()); }
Actualización: Ya que está utilizando EditText
, la forma más sencilla de evitar la NumberFormatException es especificar el atributo inputType
para que sólo acepte números. Ejemplo de XML: android:inputType="number"
. Sin embargo, aún puede obtener un valor mayor (o menor) que el tipo de datos no puede contener.
Luego, dependiendo de su caso de uso, podría incluso subir un nivel utilizando un "IntEditText" personalizado o un InputFilter
personalizado para poder especificar un min y un máximo y volver a usar el código entre las aplicaciones.
Probablemente sea una buena idea validar el valor que está leyendo desde editText2 antes de analizarlo para flotar. Asegúrese de que es un número válido primero.
IMHO está ingresando algún valor no flotante que está causando este error.
Para mí la mejor manera es hacerlo así:
editText2=(EditText) findViewById(R.id.editText2); editText3=(EditText) findViewById(R.id.editText3); if(!editText2.getText().toString().matches("")){ float from_value= Float.parseFloat(editText2.getText().toString()); editText3.setText(" "+(from_value * 100.0)); }
Y también añade esta línea a tu xml para editText2
android:inputType="numberDecimal"
Espero eso ayude !
- Android: Cómo establecer el color de trazo para el vector dibujable mediante programación
- La difusión de la acción de intención BOOT_COMPLETED no funciona correctamente