Hallo,
ich bin ganz neu hier und gerade dabei eine App zu programmieren.
Ich habe 2 Textfelder in denen man die email-Adresse und das Passwort eingeben soll und dann auf die näachste Seite gelangt.
Wenn die angaben falsch sind soll eine Fehlermeldung kommen (Das funktioniert).
Mein Problem ist jetzt das egal was ich eingebe, immer der else zweig ausgeführt wird.
Ich hoffe es kann mir jemand helfen,
Danke schonmal im Vorraus
Hier der Quelltext:
Java:
publicvoidlogin(View view){Object uservorname;Object usernachname;EditText feld_email =(EditText)findViewById(R.id.emailet);EditText feld_passwort =(EditText)findViewById(R.id.passwortet);String a =newString("max.mustermann@example.de");String b =newString("passwort");if(feld_email.getText().toString().length()==0){return;}if(feld_passwort.getText().toString().length()==0){return;}if(feld_email.equals(a)&& feld_passwort.equals(b)){
uservorname="Max";
usernachname="Mustermann";Toast.makeText(getApplicationContext(),"Einen moment bitte...",Toast.LENGTH_LONG).show();setContentView(R.layout.angemeldet);}else{Toast.makeText(getApplicationContext(),"Bitte überprüfen sie ihre eingaben.",Toast.LENGTH_LONG).show();
feld_passwort.setText("");}}}
Du vergleichst ja auch Äpfel mit Brinen. Oder EditText-Objekte mit Strings.
In deinem Code steht folgendes:
Java:
EditText feld_email =(EditText)findViewById(R.id.emailet);String a =newString("max.mustermann@example.de");if(feld_email.equals(a)){//ist nie gleich!...}
In Zeile 14 und 17 machst du es doch auch richtig und holst dir erstmal den Text, den du dann vergeleichst. Genauso musst du es hier auch machen
In Zeile 22 vergleichst du aber nicht den Inhalt des Textfeldes mit den gewünschten Werten sondern das Textfeld direkt. Und das Textfeld ist kein String!
toString auf einem String aufzurufen ist ziemlich nutzlos. Du bekommst bereits Strings von getText zurück, nehme ich mal an.
Gespeichert? Wo soll denn hier was gespeichert werden? Hier werden nur Ausdrücke ausgewertet.
Danke für die erklärung
Ich habe es gerade in meinem Quelltext reingeschrieben, es funktioniert leider immernoch nicht
Java:
publicvoidlogin(View view){Object uservorname;Object usernachname;EditText feld_email =(EditText)findViewById(R.id.emailet);EditText feld_passwort =(EditText)findViewById(R.id.passwortet);String a =newString("max.mustermann@example.de");String b =newString("passwort");if(feld_email.getText().toString().length()==0){return;}if(feld_passwort.getText().toString().length()==0){return;}if(feld_email.getText().equals(a)&& feld_passwort.getText().equals(b)){
uservorname="Max";
usernachname="Mustermann";Toast.makeText(getApplicationContext(),"Einen moment bitte...",Toast.LENGTH_LONG).show();setContentView(R.layout.angemeldet);}else{Toast.makeText(getApplicationContext(),"Bitte überprüfen sie ihre eingaben.",Toast.LENGTH_LONG).show();
feld_passwort.setText("");}}}
Nein. Bei einem EditText Objekt bekammt man bei getText() keinen String zurück. Sondern etwas vom Interface Editable. Bei meiner Android Version kann das lediglich ein Objekt der Klasse SpannableStringBuilder sein. Und um davon den String zu bekommen muss man halt toString() aufrufen. Also:
Bin ich auch schon mehr als einmal drauf reingefallen. Bin aber auch noch auf Android 2.2. Möglich, dass sich bei aktuelleren Versionen in der Richtung was getan hat. Glaube ich aber eher nicht...