2010-11-19 18 views
14

Tengo un EditText que se utilizará para un número flotante. Así que estoy tratando de leer el texto de EditText y ponerlo en una variable flotante. Pero parece que tengo un problema de texto para flotar. Esta es la línea que tengo:Cadena de EditText para flotar

float Number = ((EditText)findViewById(R.id.edit_float)).getText(); 

He intentado usar Float.parseFloat (cadena) y acaba de fundición en general, pero nada parece hacerlo. ¿Qué puedo hacer aquí? Además, ¿hay alguna manera de verificar si hay un número de flotador válido antes de escribirlo en una variable?

+0

Asegúrate de tener el hábito de mirar los tipos de devolución. Obviamente, intentar establecer una cuerda en un flotador no funcionará. Tienes que convertirlo como se ve a continuación en la respuesta de Octavian Damiean. – Thomas

+0

También sobre ese tema, en realidad está tratando de convertir desde un Editable a un flotador con esta línea, ya que 'getText()' devuelve un Editable. – kcoppock

Respuesta

36

Pruebe esto.

EditText edt = (EditText) findViewById(R.id.edit_float); 
float number = Float.valueOf(edt.getText().toString()); 

utiliza el método valueOf() si la clase Float envoltura para convertir una cadena a un flotador. En este ejemplo, obtengo el objeto Editable de ese EditText con getText() al cual llamo el método toString() para obtener una cadena de él.

Actualización: Totally right guys sorry. Es hora de incrementar mi contador de ovejas.

+2

Pruebe edt.getText(). ToString() – Falmarri

+2

'getText()' devuelve un 'Editable'. Necesitarás usar 'edt.getText(). ToString();'. editar: derrotado por 1 min. : P – kcoppock

+0

¡Gracias! Ahora mi línea completa es: Float.valueOf (((EditText) findViewById (R.id.edittext_wireframe_width)) .getText(). ToString()); – Espen

-1
float getFloatFrom(EditText txt) { 
    try { 
     return NumberFormat.getInstance().parse(txt.getText().toString()).floatValue(); 
    } catch (ParseException e) { 
     return 0.0f; 
    } 
} 

NO utilice Float.valueOf() si desea que el código funcione en los países que utilizan la coma decimal en lugar del punto decimal.

+0

Creo que la conversión de número se maneja mejor según [cómo-analizar-número-cadena-que contiene-comas-en-un-entero-en-java] (https://stackoverflow.com/questions/11973383/how -to-parse-number-string-containing-commas-into-an-integer-in-java) – bated

+0

¿Puede ser más específico? – Daniel