我似乎无法在第二个if语句中获取代码来执行。我记录了两个被比较的值,并运行调试器并检查它们。他们都是“一个”。它始终显示错误的密码对话框。这个问题似乎很难,因为它似乎应该只是工作,但任何帮助都是值得赞赏的。
private void logUserIn(AppUser user) {
if (user != null){
Log.d("mPassword: ", mPassword);
Log.d("user.getPassword(): ", user.getPassword());
String userPassword = user.getPassword().toString();
String formPassword = mPassword.toString();
if ( userPassword == formPassword ){
Intent welcomePage = new Intent(this, StartScreenActivity.class);
welcomePage.putExtra("name", mName);
startActivity(welcomePage);
}
else {
showIncorrectPasswordDialog();
}
}else {
showIncorrectUserNameDialog();
}
}
答案 0 :(得分:1)
您正在比较对象标识。使用string.equals()
检查等效性。
if(userPassword.equals(formPassword)){
}
答案 1 :(得分:0)
更改
if ( userPassword == formPassword ){
到
if ( userPassword.equals(formPassword) ){
==
比较对象引用,而.equals
则比较String 值。
答案 2 :(得分:0)
您无法使用==
比较字符串
试试这个
将指定对象与此字符串进行比较,如果它们相等则返回true。该对象必须是具有相同顺序的相同字符的字符串实例。
if ( userPassword.equals(formPassword)){
// do some stuff
}
或
将指定的字符串与此字符串进行比较,忽略字符的大小写,如果它们相等则返回true。
if(userPassword.equalsIgnoreCase(formPassword))
{
//do some stuff
}
答案 3 :(得分:0)
在JAVA
中比较字符串,您应该使用:
if(userPassword.equals(formPassword)) {
// they are equal
}
答案 4 :(得分:0)
更改
if ( userPassword == formPassword ){
到
if ( userPassword.equals(formPassword)){
在Java中,String
与.equals()
进行了比较。使用==
比较对象引用而不是它们的值。
答案 5 :(得分:0)
在JAVA中,您应该使用equals来判断不同String的值是否相等。 ==用于判断字符串的对象指针,因此它只会在你的情况下返回false。