将EditText中的文本与数据库中的字符串进行比较

时间:2011-05-06 17:52:51

标签: java android

此代码应将 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”......怎么会这样?

4 个答案:

答案 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)))

这将比较实际的字符串。