Probleme mit equals und get.Text

android_domi

Mitglied
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:
public void login(View view){
    
	
	
	Object uservorname;
	Object usernachname;
    	
    	EditText feld_email = (EditText)findViewById(R.id.emailet); 
    	EditText feld_passwort = (EditText)findViewById(R.id.passwortet); 
    	
    	String a = new String("max.mustermann@example.de");
    	String b = new String("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 = new String("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
 
Ja aber du verwendest in beiden Zeilen
Code:
getText()
um dir den Inhalt des Textfeldes zu holen!

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!

Code:
getText().toString()

Der Aufruf von
Code:
toString()
nach
Code:
getText()
ist unnötig! getText liefert dir schon einen String zurück mit welchem du arbeiten kannst!
 
Zuletzt bearbeitet:
oohh... okay super!! Danke!

Müsste ich dann quasi
Java:
if (feld_email.getText().toString()(a) && feld_passwort.getText().toString()(b))

schreiben?

Und wohin wird das gespeichert? In einen Vorhandenen String?
 
Java:
    if (feld_email.getText().equals(a) && feld_passwort.getText().equals(b))

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:
public void login(View view){
    
	
	
	Object uservorname;
	Object usernachname;
    	
    	EditText feld_email = (EditText)findViewById(R.id.emailet); 
    	EditText feld_passwort = (EditText)findViewById(R.id.passwortet); 
    	
    	String a = new String("max.mustermann@example.de");
    	String b = new String("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("");
    		}	
    			
    				}
}
oder habe ich da noch etwas übersehen?
 
Zuletzt bearbeitet:
@Joose
@android_domi
@njans

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:

Java:
EditText edit = (EditText)findViewById(R.id.editTextName);
String derText = edit.getText().toString();
 
Zuletzt bearbeitet:
@X5-599

Alles klar 😉 habe zwar gesehen das es sich hier um Android handelt. Aber ich bin davon ausgegangen das ein
Code:
getText()
ähnlich Swing einen String zurückliefert. Das erklärt natürlich warum es immer noch nicht funktioniert!
 
boa Okay da muss ich jetzt erstmal durchsteigen...

Also in meinem Fall:
Java:
    EditText edit = (EditText)findViewById(R.id.emailet);
    a  [email]max.mustermann@example.de[/email] = edit.getText().toString();
??

Ich verstehe das noch nicht ganz 😳
 
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...


In deiner Zeile 22:
Java:
if (feld_email.getText().toString().equals(a) && feld_passwort.getText().toString().equals(b)) {

Somit wird die equals() Methode auf den tatsächlichen Strings ausgeführt und nicht auf den Objekten die getText() zurück gibt.
 
Zuletzt bearbeitet:

Zurück
Oben