Wie gebe ich ein int von EditText zurück? (Android)

70

Grundsätzlich möchte ich einen EditText in Android, in den ich einen ganzzahligen Wert eingeben kann. Vielleicht gibt es dafür ein passenderes Objekt als EditText?

Rob S.
quelle

Antworten:

147

Verwenden Sie vorerst eine EditText. Verwenden android:inputType="number"Sie diese Option, um die numerische Darstellung zu erzwingen. Konvertieren Sie die resultierende Zeichenfolge in eine Ganzzahl (z Integer.parseInt(myEditText.getText().toString()). B. ).

In Zukunft könnten Sie ein NumberPickerWidget in Betracht ziehen , sobald es verfügbar ist (voraussichtlich in Honeycomb).

CommonsWare
quelle
Wissen Sie in Java auf Anhieb, was das ganzzahlige Äquivalent des andT-Attributs "number" inputType ist? (dh: EditText.setInputType (Ganzzahl)). Vielen Dank.
Rob S.
@Rob S.: InputType.TYPE_CLASS_NUMBER, Wie in der Dokumentation angegeben.
CommonsWare
7
Ich denke, dies sollte erweitert werden, um Fälle zu berücksichtigen, in denen der editText keinen Wert hat (dh editText.getText () == "").
user1923613
4
Eine Ausnahme wird ausgelöst, wenn der Edittext null ist. Beim Geben wie Integer.parseInt (myEditText.getText (). ToString ())
Sharath
10

Setzen Sie das Ziffernattribut auf true, wodurch nur Zahleneingaben zulässig sind.

Dann tun Sie Integer.valueOf(editText.getText()), um einen int-Wert herauszuholen.

Cheryl Simon
quelle
5
Verursacht dies keinen The method valueOf(String) in the type Integer is not applicable for the arguments (Editable)Fehler?
Zhangxaochen
2
@zhangxaochen - getText()ist kein String. Es wird benötigt, um anzurufengetText().toString()
Janusz Hain
9

Holen Sie sich zuerst eine Zeichenfolge aus einem EDITTEXT und konvertieren Sie diese Zeichenfolge dann in eine Ganzzahl wie

      String no=myTxt.getText().toString();       //this will get a string                               
      int no2=Integer.parseInt(no);              //this will get a no from the string
Pir Fahim Shah
quelle
0

Sie können dies in 2 Schritten tun:

1: Ändern Sie den Eingabetyp (in Ihrem EditTextFeld) in der Layoutdatei inandroid:inputType="number"

2: Verwenden int a = Integer.parseInt(yourEditTextObject.getText().toString());

Girish BR
quelle
Wie andere Antworten gezeigt haben, ist es wirklich eher ein "und" als ein "oder", oder? Wenn Sie 1 ausführen, müssen Sie noch 2 ausführen. Das XML kann nicht ändern, was Sie als Rückgabetyp in Java erhalten. Wenn Sie 2 ausführen, möchten Sie 1 ausführen, um eine sichere Eingabe zu gewährleisten. Sie müssen immer 2 machen und es ist am besten, einfach beides zu machen.
Tim M.
Danke Tim, es war ein Tippfehler!
Girish BR
(Um diese Kommentare in einen Zusammenhang zu bringen, wurde das Problem seitdem über die Bearbeitung behoben.)
Tim M.