此代码应将 R.id.editUserName 中输入的文本与 R.string.DB_username 进行比较,如果匹配,请将您登录,否则显示吐司他们不匹配。
public void signIn(View view) {
EditText editUserName = (EditText)findViewById(R.id.editUserName);
String userName = editUserName.getText().toString();
if ( userName == getResources().getString(R.string.DB_username)) {
// log in
setContentView(R.layout.screen1);
} else {
// show toast
Toast toast = Toast.makeText(getApplicationContext(), userName+" != "+getResources().getString(R.string.DB_username), Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
}
即使他们确实匹配,它仍会显示祝酒词,例如“Roger!= Roger”......怎么会这样?
答案 0 :(得分:5)
不要那样比较。使用java提供的字符串比较函数来比较它们。
参考这里: http://www.devdaily.com/java/edu/qanda/pjqa00001.shtml
答案 1 :(得分:5)
您无法比较Java中的字符串。你需要:
if (userName.equals(...))
你的代码所说的是“这两件事在内存中是完全相同的对象吗?”而不是“每个对象的内容是否相同?”
答案 2 :(得分:2)
我认为你需要查找Java平等。 ==是引用相等。使用字符串的equals方法,即
if ( userName.equals(getResources().getString(R.string.DB_username)))
罗杰,那个?
答案 3 :(得分:1)
当字符串本身是不同的对象时,它不匹配。你应该使用
if ( userName.equals(getResources().getString(R.string.DB_username)))
这将比较实际的字符串。