2017-04-30 18 views
-2

私はそれを使用していることを認証するために、簡単なパスワードが添付された個人用アプリケーションのAndroidスタジオプロジェクトを持っています。私のコードは次の通りです:Edittext文字列比較が動作しない

public class StartActivity extends AppCompatActivity { 
    FloatingActionButton authenticate; 
    EditText passwordInput; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_start); 

     authenticate = (FloatingActionButton) findViewById(R.id.authenticateCheck); 
     passwordInput = (EditText) findViewById(R.id.inputPass); 

     authenticate.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if(passwordInput.getText().toString() == "Magic") { 
        Intent i = new Intent(StartActivity.this, LilyMainInterface.class); 
        startActivity(i); 
       } else { 
        passwordInput.setText(""); 
       } 
      } 
     }); 
    } 
} 

私は必要なクラスをすべてインポートしましたが、どれも動作していません。何も問題はなく、if文を削除すると、コードは正常に正しい動作を開きます。それ以外は、パスワードが一致していないとみなし続けます。

編集: コメントで言ったように私は

.equals() 

== 

を変更しました。しかし、私が前にやっていなかった理由は、アンドロイドスタジオから次のようなメッセージが届いたからです:

文字列の値は '=='と 'equals()'ではなく比較されます。

android studioがそうでないと明示的に述べていますが、.equals()はなぜ機能しますか?

+0

。 if(passwordInput.toString()== "Magic") 'を' if(passwordInput.getText..toString()== "Magic") 'に置き換えます。 –

+0

IDEが表示しているメッセージを誤解していると思います。 '=='を使って 'String'を比較するのは、おそらくあなたが望むものではないことを示唆しているはずです。 –

答えて

0

あなたは次のようにedittextから文字列と一致する必要があります:あなたがに合わせてお使いのEditText `passwordInput`からテキストを取得されていません

passwordInput = (EditText) findViewById(R.id.inputPass); 

    if(passwordInput.getText().toString().equals("Magic")) { 
     Intent i = new Intent(StartActivity.this, LilyMainInterface.class); 
     startActivity(i); 
    } 
+0

トリミングはなぜですか?パスワードには、先頭または末尾のスペースが簡単にあります。 – Stephen

+0

大丈夫...私はそれを得る...最初にパスワードを!..! – rafsanahmad007

+0

@newbRaymond答えが役に立たない場合は、スタックオーバーフローを歓迎します...答えの横のチックをクリックして、正しいとマークする必要があります。 – rafsanahmad007