Brauche Hilfe EditText ändern in int

  • Antworten:9
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 8

01.02.2015, 14:21:18 via Website

Hallo zusammen ich versuche die ganze zeit folgendes:

Der User soll eine Zahl in ein edittext eingeben und diese soll dann mit einer if und else abgefragt werde.

Also:
EditText Eingabe =( EditText )findViewById ( edittext1);
TextView Text =( TextView)findViewById ( textview1);

Int a =Integer.parseInt. (Eingabe.getText ().toString ());

If (a==0){
Text.setText ("falsche eingabe");

}

Sobald ich die App zum laufen bringe stürzt sie ab.

In der Fehlermeldung steht folgendes. Integer.java:358
Und von Integer.parseInt ist auch die rede?
Kann mir da jemand weiterhelfen wo der Fehler nun liegt?

— geändert am 01.02.2015, 14:41:24

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.177

01.02.2015, 14:25:48 via Website

Hallo fethi bilici ,

Herzlich willkommen bei uns im Forum :)
Bitte beachte, dass Threads mit nicht aussagekräftigem Titel bei uns üblicherweise den Regeln entsprechend entfernt werden. Ich bitte dich daher, deinen Threadtitel innerhalb der nächsten 24 Stunden, spätestens jedoch bei deinem nächsten Besuch noch etwas aussagekräftiger zu gestalten (Hierfür einfach unter deinem ersten Beitrag auf 'bearbeiten' klicken, dann kannst du oben noch mal den Titel anpassen)
Danke :)



Bitte poste mal mehr von deinem Code + LogCat.

Wo genau lässt du das denn ausführen?
in der onCreate?

EditText Eingabe =( EditText )findViewById ( edittext1); //hierfür gibt es extra Konstanten z.b. R.id.editText
TextView Text =( TextView)findViewById ( textview1) //genau das gleiche wie oben 

Wein weiterer Fehler kann auftreten wenn das was du in dein EditText eingibtst kien Zahl ist. Dann solltest du eine try + catch duum machen.

LG Pascal

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 8

01.02.2015, 15:04:00 via Website

so hier dieFehlermeldung, und ja ich lasse ihn in der onCreate laufen.
( R.id. ) habe ich bei beiden gemacht habe es nur oben vergessen zu schreiben. )

also im voraus danke:

02-01 14:55:31.614: E/AndroidRuntime(31546): FATAL EXCEPTION: main
02-01 14:55:31.614: E/AndroidRuntime(31546): Process: com.fethi.kararit, PID: 31546
02-01 14:55:31.614: E/AndroidRuntime(31546): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fethi.kararit/com.fethi.kararit.ZweiteKlasse}: java.lang.NumberFormatException: Invalid int: ""
02-01 14:55:31.614: E/AndroidRuntime(31546): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2394)
02-01 14:55:31.614: E/AndroidRuntime(31546): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2452)
02-01 14:55:31.614: E/AndroidRuntime(31546): at android.app.ActivityThread.access$900(ActivityThread.java:172)
02-01 14:55:31.614: E/AndroidRuntime(31546): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302)
02-01 14:55:31.614: E/AndroidRuntime(31546): at android.os.Handler.dispatchMessage(Handler.java:102)
02-01 14:55:31.614: E/AndroidRuntime(31546): at android.os.Looper.loop(Looper.java:136)
02-01 14:55:31.614: E/AndroidRuntime(31546): at android.app.ActivityThread.main(ActivityThread.java:5586)
02-01 14:55:31.614: E/AndroidRuntime(31546): at java.lang.reflect.Method.invokeNative(Native Method)
02-01 14:55:31.614: E/AndroidRuntime(31546): at java.lang.reflect.Method.invoke(Method.java:515)
02-01 14:55:31.614: E/AndroidRuntime(31546): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
02-01 14:55:31.614: E/AndroidRuntime(31546): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
02-01 14:55:31.614: E/AndroidRuntime(31546): at dalvik.system.NativeStart.main(Native Method)
02-01 14:55:31.614: E/AndroidRuntime(31546): Caused by: java.lang.NumberFormatException: Invalid int: ""
02-01 14:55:31.614: E/AndroidRuntime(31546): at java.lang.Integer.invalidInt(Integer.java:137)
02-01 14:55:31.614: E/AndroidRuntime(31546): at java.lang.Integer.parseInt(Integer.java:358)
02-01 14:55:31.614: E/AndroidRuntime(31546): at java.lang.Integer.parseInt(Integer.java:331)
02-01 14:55:31.614: E/AndroidRuntime(31546): at com.fethi.kararit.ZweiteKlasse.onCreate(ZweiteKlasse.java:33)
02-01 14:55:31.614: E/AndroidRuntime(31546): at android.app.Activity.performCreate(Activity.java:5451)
02-01 14:55:31.614: E/AndroidRuntime(31546): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
02-01 14:55:31.614: E/AndroidRuntime(31546): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358)
02-01 14:55:31.614: E/AndroidRuntime(31546): ... 11 more

Antworten
  • Forum-Beiträge: 8

01.02.2015, 15:06:11 via Website

hier mein code:

public class ZweiteKlasse extends Activity {
Button btn;
TextView tv,tv3,tv4,tv5,tv6,tv7,tv8,fehler;

EditText eingabe;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.zweite);


    eingabe = (EditText)findViewById(R.id.editText1);
    int gibEin = Integer.parseInt(eingabe.getText().toString());

    if ( gibEin == 0){

        fehler.setText(" Bitte geben Sie eine Zahl zwischen 2-5 ein");

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.177

01.02.2015, 15:14:19 via Website

So, du hast jetzt beide oben genannte Fehler gemacht.

  1. Fehler ist invaild ist : "" da im EditText ein leerer String ist. Um das zu lösen musst du eine try und cahtch Block im dein Parse int machen:

    String userdata = editText.getText().toString();
    int val;
    try
    {
    val = Integer.parseInt(userdata);
    }
    catch (NumberFormatException nfe)
    {
    //Handle Error
    }

  2. Du brauchst noch einen Button auf dem du dann clicken musst damit der Text verarbeitet wird. Auf dem Button setzt du dann ein onClikc listener in welchen du dann einen Verarbeitungscode reinschreiben kannst.

Wenn du das nicht machst, dann wird dein Programm niemals wieder nach dem Starten an die Stelle kommen.

LG

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 8

01.02.2015, 15:17:44 via App

hey vielen dank für die schnelle Antwort werde das sofort machen sobald ich daheim bin. LG

Antworten
  • Forum-Beiträge: 222

02.02.2015, 08:12:57 via Website

Try- catch ist nicht schlechte "Sache", soll aber kein Gegenmittel für bekannte! Fehler sein.
Warum eine Extension auswerfen lassen, wenn das Problem Explizit bekannt! - ist?
Das könnte man mit:
...
if (null == eingabe || 0 == eingabe.length())
if(eingabe.indexOf('-') != -1)
if (eingabe.indexOf('.') != -1)
...
schnüren, .... nun der User hat sein vorgehen genau erläutert:
fehler.setText(" Bitte geben Sie eine Zahl zwischen 2-5 ein");

Dafür passt die ... matches Methode.

if (eingabe.matches("[+-]?[2-5]+")){ // Pattern to 2 && 5 & ...
gibEin = Integer.parseInt(eingabe);
} else {
// Fehlermeldung ausgeben
fehler.setText(" Bitte geben Sie eine Zahl zwischen 2 und 5 ein");
}

LG
Georg

— geändert am 02.02.2015, 08:14:25

Sorry für Gramatik & Stilistik Fehler.

Antworten
  • Forum-Beiträge: 8

02.02.2015, 12:21:38 via App

Vielen dank Georg werde auch diese Variante gleich mal ausprobieren. Mfg

Antworten
  • Forum-Beiträge: 1.904

02.02.2015, 13:07:42 via App

Oder einfach den Inputtype auf decimal, double, int oder sowas.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten

Empfohlene Artikel