私はそれを使用していることを認証するために、簡単なパスワードが添付された個人用アプリケーションの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()はなぜ機能しますか?
。 if(passwordInput.toString()== "Magic") 'を' if(passwordInput.getText..toString()== "Magic") 'に置き換えます。 –
IDEが表示しているメッセージを誤解していると思います。 '=='を使って 'String'を比較するのは、おそらくあなたが望むものではないことを示唆しているはずです。 –