EditText: Leeres Feld

  • 3 Antworten
  • Letztes Antwortdatum
H

hilfsbedürftig

Neues Mitglied
0
Hallo zusammen,
ich probiere mich gerade an einer kleinen App und habe ein ein Problem. Für die App werden numericdecimal Eingabe in einen Edittext benötigt.

Wenn ich die App starte und bei der FRISCH GESTARTETEN Emulation bei den edittext den Wert freilasse, also nichts eintrage, bricht der Emulator die App ab "...has stopped unexpactedly".

Wenn bereits ein Wert, also nicht kein Eintrag, dem System übergeben wurde verarbeitet das Script alles so wie es soll...

Momentan sieht das wesentliche so aus:
Code:
public void addListenerOnButton(){
   button = (Button)  findViewById(R.id.button);
   button.setOnClickListener(new OnClickListener() {
      private double zahl;

      public void onClick(View v){
         edit = (EditText) findViewById(R.id.edit);
         zahl = Double.valueOf(edit.getText().toString());

         try {
            ViewOnClickListener handler = new View.OnClickListener(){
               public void onClick(View v) {
                  switch(v.getId()){
                     case R.id.button:
                     if (zahl <= 0 || TextUtils.isEmpty(edit.getText().toString())) {
                        Toast.makeText( Mainactivity.this,
                           "Enter something",
                        Toast.Lenght_Short).show();
                        break;
                     }else{
                        Toast.makeText( Mainactivity.this,
                           "Input: " + edit.getText(),
                        Toast.Lenght_Short).show();
                        break;
                     }
                  }
               }
            };
            findViewById(R.id.button).setOnClickListener(handler);
         }
         catch (NullPointerException e) {
            e.printStackTrace();
         }
         catch (Exception e) {
            e.printStackTrace();
         }
      }
   });
}

Wie bekomme ich per Script für des System, speziell "edit", einen Wert übergeben bevor ich selber einen Wert onClick übermittle?

Ich versuchte das Problem bereits anders zu lösen, funktionierte aber auch nicht; oder ich habe den Lösungsansatz falsch eingebunden:
android - Prevent edittext from being empty - Stack Overflow

Vielleicht gibt es unberücksichtigt meiner Frage ja noch einen anderen Vorschlag.
 
Da du kein LogCat mitgelifert hast bleibt nur der Blick in meine Glaskugel:

Vermutlich liefert im onClick() der getText() null zurück. Das ist außerhalb des try-Blocks ergo Absturz.
 
Es wird genau hier passieren:

zahl = Double.valueOf(edit.getText().toString());

Ein toString() auf NULL gibt in jedem Fall eine NullPointerException.

Was mir noch aufgefallen ist, warum fängst du in deinem try-catch überhaupt noch die NullPointer und die allgemeine Exception? Die allgemeine Exception schließt alle Exceptions mit ein, daher brauchst du andere gar nicht mehr behandeln.
Aber: Das fangen von allgemeinen Exception ist ein dreckiger Stil. Wenn du weißt, dass bestimmte Exceptions auftreten können, z.B. IOException, dann fang diese ab. Alles andere verhindert nur, dass DEINE Programmierfehler nicht auffallen.
 
Und überhaupt,

catch exeption und catch NPE benutzt man sowieso NIEMALS :D

lg. Dagobeert
 
Zurück
Oben Unten