可能重复:
How do I compare strings in Java?
why equals() method when we have == operator?
我要做的就是将文本字段小部件中输入的文本与给定字符串(“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");
}
});
}
...
答案 0 :(得分:9)
一个问题是:
if (textedit.getText().toString() == "abc")
应该是
if (textedit.getText().toString().equals("abc") )
更好:
if ("abc".equals(textedit.getText().toString()))
在比较字符串/对象而不是使用equals()
==
==
检查引用相等性。 equals()
检查内容是否相等。
答案 1 :(得分:4)
您无法将Java / Android中的String与==
进行比较,您必须使用equals()
:
if (textedit.getText().toString().equals("abc"))
中找到 why 的详细解释
答案 2 :(得分: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();
}
}
});
}