3

可能重复:
如何比较 Java 中的字符串?
当我们有 == 运算符时,为什么要使用 equals() 方法?

我在这里要做的就是将在文本字段小部件中输入的文本与给定的字符串(“abc”)进行比较,然后将按钮文本设置为“错误通过”或“通过正常”。但是,即使我输入了正确的“密码”,按钮文本也始终设置为“错误密码”。我究竟做错了什么?

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

一个问题是:

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 回答