2010-11-19 13 views
14

Ich habe einen EditText, für den eine Float-Nummer verwendet wird. Also versuche ich den Text aus dem EditText zu lesen und in eine float-Variable zu schreiben. Aber ich habe anscheinend einen Text, um das Problem zu schweben. Das ist die Linie, die ich habe:String von EditText zu float

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

Ich habe versucht, mit Float.parseFloat (string) und nur allgemeine Gießen, aber nichts scheint es zu tun. Was kann ich hier machen? Gibt es auch eine Möglichkeit, nach einer gültigen Gleitkommazahl zu suchen, bevor Sie sie in eine Variable schreiben?

+0

Achten Sie darauf, dass Sie sich die Rückgabetypen angewöhnt haben. Offensichtlich wird es nicht funktionieren, einen String in einen Float zu setzen. Sie müssen es konvertieren, wie unten in Octavian Damieans Antwort zu sehen ist. – Thomas

+0

Auch zu diesem Thema versucht er tatsächlich, mit dieser Zeile von einem Editable zu einem Float zu wechseln, da 'getText()' ein Editable zurückgibt. – kcoppock

Antwort

36

Versuchen Sie dies.

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

Sie verwenden die valueOf() Methode, wenn die Float Wrapper-Klasse einen String in einen Schwimmer zu konvertieren. In diesem Beispiel erhalte ich das Objekt Editable dieses EditText mit getText(), auf dem ich die toString() Methode aufrufen, um eine Zeichenfolge von ihm zu erhalten.

Update: Total richtig Jungs Entschuldigung. Zeit, meinen Schaftresen zu erhöhen.

+2

Versuchen Sie, edt.getText(). ToString() – Falmarri

+2

'getText()' gibt ein 'Editable' zurück. Sie müssen 'edt.getText(). ToString();' verwenden. bearbeiten: geschlagen von 1 min. : P – kcoppock

+0

Danke! Jetzt ist meine vollständige Zeile: 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; 
    } 
} 

Verwenden Float.valueOf NOT(), wenn Sie den Code wollen in Ländern arbeiten, statt Komma Komma verwenden.

+0

Ich glaube, dass die Zahlenumwandlung am besten gemäß [how-to-parse-number-string-contains-in-integer-in-java] gehandhabt wird (https://stackoverflow.com/questions/11973383/how) to-parse-number-string-contains-comments-in-integer-in-java) – bated

+0

Können Sie genauer? – Daniel