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:

03-18 03: 19: 07.847: E / AndroidRuntime (875): Causado por: java.lang.NumberFormatException: Float inválido: ""

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 Wifi Direct detecta a sus compañeros pero Peer List es emty
  • Cambiando el color de fondo del menú desplegable de la acción
  • Flujo de trabajo de desarrollo de aplicaciones Android más eficiente?
  • Usando la intención de llamar a un fragmento de otro fragmento
  • ViewRootImpl no está en el SDK de Android
  • ¿Por qué WiFiP2P necesita permiso de Internet?
  • Cómo convertir wsdl a java?
  • ¿Cómo desarrollar una caminata a través del diálogo que aparece en el primer lanzamiento?
  • Salida automática después de X minutos, Android
  • Alarma programada para repetir cada minuto del reloj android
  • Adición de vistas en un orden específico y almacenamiento de dicho pedido
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.