Bedingung mit String nie erfüllt

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von fdsa, 17.05.2012.

  1. fdsa, 17.05.2012 #1
    fdsa

    fdsa Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    16.05.2012
    Hallo
    Ich hab basierend auf dem Youtube-Tutorial (Android Apps Programmieren #3 Rechner App (German/ Deutsch) (HD) - YouTube) eine Rechner-App erstellt.
    Dabei hab ich u. a. ein Textfeld, das ich auf den Inhalt prüfen möchte. Doch leider funktioniert das nicht wie ich mir das vorstelle. Der entscheidende Code lautet:
    Code:
         EditText Feld1 = (EditText) findViewById(R.id.value1);
         EditText Feld2 = (EditText) findViewById(R.id.value2);
         if( Feld1.getText().toString() == "2" ) {
          Feld2.setText(Feld1.getText());
          return;
         }
    
    Die Bedingung wird jedoch bei Eingabe von 2 ins Textfeld "Feld1" nicht erfüllt.
    Woran liegt das?
    Besten Dank
    Markus
     
    Zuletzt von einem Moderator bearbeitet: 17.06.2015
  2. keinbrain, 17.05.2012 #2
    keinbrain

    keinbrain Fortgeschrittenes Mitglied

    Beiträge:
    316
    Erhaltene Danke:
    21
    Registriert seit:
    07.03.2012
    Du kannst einen String nicht mit == auslesen bzw. 'vergleichen' , sondern nur mit equals:

    Code:
    
       if( Feld1.getText().toString().equals( "2" )) {
    
    
    Mfg keinbrain
     
  3. fdsa, 17.05.2012 #3
    fdsa

    fdsa Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    16.05.2012
    Ah, besten Dank, nun funktionierts :)
     
  4. v Ralle v, 18.05.2012 #4
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    Das ist glaub ich einer der ersten Fehler, den jeder Anfänger macht ^^ Objektorientierung ist das Schlagwort ;)
     
  5. ChrisMobile, 18.05.2012 #5
    ChrisMobile

    ChrisMobile Android-Experte

    Beiträge:
    529
    Erhaltene Danke:
    74
    Registriert seit:
    17.03.2010
    Phone:
    HTC One X
    Kurze Erkläung dazu, warum es nicht funktioniert.
    Der "=="-Operator vergleicht nicht den Inhalt der Objekte, sondern die Referenz der Objekte (hier Strings) auf den Platz im Arbeitspeicher.
    Dieser wird nie gleich sein außer man schreibt vorher str2 = str1 und vergleicht dann.

    Z.B. bei Integern klappt das ganze, weil Integer keine Objekte sondern primitive Datentypen sind.
     
    h4kkin bedankt sich.

Diese Seite empfehlen