3

重複の可能性:
Java で文字列を比較するにはどうすればよいですか?
== 演算子があるのに equals() メソッドを使用するのはなぜですか?

ここでやろうとしているのは、テキスト フィールド ウィジェットに入力されたテキストを特定の文字列 ("abc") と比較し、ボタン テキストを "wrong pass" または "pass ok" に設定することだけです。ただし、正しい「パスワード」を入力しても、ボタンテキストは常に「間違ったパス」に設定されます。私は何を間違っていますか?

public class FullscreenActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_start);

    final Button button = (Button) findViewById(R.id.button);
    final EditText textedit = (EditText) findViewById(R.id.textedit);

    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            if (textedit.getText().toString() == "abc") 
                button.setText("pass ok"); // doesn't work
            else 
                button.setText("wrong pass");

        }
    });
}

...
4

3 に答える 3

9

1つの問題は次のとおりです。

if (textedit.getText().toString() == "abc") 

する必要があります

if (textedit.getText().toString().equals("abc") )

さらに良い:

 if ("abc".equals(textedit.getText().toString()))

equals()使用するのではなく、文字列/オブジェクトを比較しながら使用することを常にお勧めします==

==参照の等価性をチェックします。equals()コンテンツの同等性をチェックします。

于 2013-01-10T19:16:07.337 に答える
4

Java / Android の String を と比較することはできません==。次を使用する必要がありますequals()

if (textedit.getText().toString().equals("abc")) 

その理由については、Java で文字列を比較するにはどうすればよいですか?で適切な説明を見つけることができます。

于 2013-01-10T19:16:39.840 に答える
4

「等しい」を使用して、これを試してください。

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    final Button button = (Button) findViewById(R.id.btnLogin);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
        EditText getpass = (EditText)findViewById(R.id.textedit);

            String pass = getpass.getText().toString();

            if(pass.equals("abc")){
                Toast toast = Toast.makeText(getApplicationContext(), "pass ok", Toast.LENGTH_SHORT);
                toast.show();



            }else{
                Toast toast = Toast.makeText(getApplicationContext(), "wrong pass", Toast.LENGTH_SHORT);
                toast.show();
            }
        }
    });

}
于 2013-01-10T19:18:18.667 に答える