2017-03-10 1 views
-4

Meine App besteht aus einem Activity, der nach einem String Passwort fragt, um einen zweiten Activity zu starten. Ich verwende eine EditText für die Eingabe und eine Button für die Überprüfung. Wenn die Button gedrückt wird, sollte die App überprüfen, ob das eingefügte Passwort (nehmen wir an, es ist "ABC") mit dem Passwort im Array übereinstimmt. Wenn nicht, setzen Sie das eingefügte Passwort auf eine rote Farbe.Passwort - String Vergleich

public class Login extends AppCompatActivity{ 

    Button mButton; 
    EditText mEdit; 
    String [] mArray; 


    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.login); 

     mButton = (Button)findViewById(R.id.anmelden_button); 
     mEdit = (EditText)findViewById(R.id.password); 

     mButton.setOnClickListener(
       new View.OnClickListener() 
       { 
        public void onClick(View view) 
        { 
         Log.v("EditText", mEdit.getText().toString()); 
        } 
       }); 

     String [] mArray = getResources().getStringArray(R.array.password); 

     if (mArray.equals(mEdit.getText().toString())){ 
      Intent intent = new Intent(this, secondactivity.class); 
      startActivity(intent); 

     }else{ 
      mEdit.setTextColor(Color.RED); 
     } 
    } 
} 

Mein Problem ist, dass, wenn ich „ABC“ und drücken Sie die Taste einfügen, nichts passiert.

+3

Nichts? Nicht einmal eine Logging-Aussage? –

+0

Nur "V/EditText: ABC" aber ich habe keine Ahnung was mir das sagen soll. – Quacksilber

+0

Bc das kühne Zeug soll das eigentliche Problem zeigen, nicht-Bolzen als nähere Beschreibung, aber ich kann das entfernen, wenn du willst :) – Quacksilber

Antwort

1

Sie Schleife müssen durch alle Passwörter zuerst, dann überprüfen Sie, wenn Sie gefunden haben, was Sie wollten.

Ihre Onclick Zuhörer sollte wie folgt aussehen:

mButton.setOnClickListener(new View.OnClickListener() 
{ 
    public void onClick(View view) 
    { 
     String [] mArray = getResources().getStringArray(R.array.password); 

     // loop to check all passwords 
     for (String s : mArray) { 
      if (s.equals(mEdit.getText().toString())) { 
       // found the password 
       Intent intent = new Intent(this, secondactivity.class); 
       startActivity(intent); 
       return; 
      } 
     } 

     mEdit.setTextColor(Color.RED); 

    } 
}); 
+0

jetzt passiert überhaupt nichts – Quacksilber

+0

@Quacksilber der Text wird nicht rot UND die neue Aktivität kommt nicht auf? Kann Ihnen dann nicht helfen, da ist etwas anderes in Ihrem Code falsch. – Aify

+0

Ok, ich habe etw in der strings.xml geändert und es funktioniert jetzt, vielen Dank für deine Hilfe !!! :) – Quacksilber

0

Setzen Sie Ihr Passwort Prüfcodes in der OnClickListener

Schleife durch jedes Element des Arrays, es gegen den Wert in Ihrem EditText Überprüfung

+2

Ihre Prüfmethode ist falsch. Sie überprüfen ein Array-Objekt auf einen String. – Pztar

+0

Alles klar, ich habe alle deine Anweisungen befolgt und auch alle Array-Sachen in einen String geändert, aber jetzt bekomme ich einen Fehler, der mir sagt, diese Zeile (String [] mArray = getResources(). GetString (R.string.password);) funktioniert nicht, bc es erfordert String [] und String gefunden. Was ist der Unterschied dort? – Quacksilber

+0

In dieser Zeile steht "_assign this string to this array_" - Sie können solche Typen nicht mischen. Stellen Sie sich vor Sie haben dies geschrieben "int i =" Dies ist ein String "'. Das wird aus dem gleichen Grund nicht funktionieren - es heißt "_zeichne diesen String diesem int_". – csmckelvey