我很困惑,为什么即使两个视图返回相同的文本,下面的代码总是会出现错误的toast。
@Override
public void onClick(View view) {
int intID = view.getId();
Button button = (Button) findViewById(intID);
CharSequence message = button.getText().toString();
Log.i(LOGTAG, (String) message);
TextView textview = (TextView) findViewById(R.id.correct);
CharSequence answer = textview.getText().toString();
Log.i(LOGTAG, (String) answer);
if (message == answer) {
Toast.makeText(getApplicationContext(), "Correct", Toast.LENGTH_LONG).show();
} else if (message != answer);{
Toast.makeText(getApplicationContext(), "Incorrect", Toast.LENGTH_LONG).show();
}
}
日志
06-04 18:56:25.752: I/APP(1972): Germany
06-04 18:56:25.752: I/APP(1972): Germany
按钮当然是一个按钮,textview是一个不可见的textview。从LOGCAT中可以看到" message"并且"回答"给出相同的文字然而答案是" if message == answer"永远是不正确的。有谁为什么以及如何解决这个问题。 亲切的问候,德里克
答案 0 :(得分:0)
使用message.equals(answer)
。在Java中String
被视为对象,因此==
比较引用,而不是实际的字符串内容。
答案 1 :(得分:0)
在Java中==比较引用而不是字符串的内容。使用message.equals(answer)进行内容比较。