Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android &引用==&引用;对于总是返回false的字符串_Android_String_Compare - Fatal编程技术网

Android &引用==&引用;对于总是返回false的字符串

Android &引用==&引用;对于总是返回false的字符串,android,string,compare,Android,String,Compare,我似乎无法在第二个if语句中执行代码。我已经记录了正在比较的两个值,还运行了调试器并检查了它们。他们都是“a”。它总是显示错误的密码对话框。这个问题似乎很难回答,因为它似乎应该起作用,但任何帮助都是值得感谢的 private void logUserIn(AppUser user) { if (user != null){ Log.d("mPassword: ", mPassword); Log.d("use

我似乎无法在第二个if语句中执行代码。我已经记录了正在比较的两个值,还运行了调试器并检查了它们。他们都是“a”。它总是显示错误的密码对话框。这个问题似乎很难回答,因为它似乎应该起作用,但任何帮助都是值得感谢的

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();
            }
        }

您正在比较对象标识。使用
string.equals()
检查等效性

if(userPassword.equals(formPassword)){
}
改变

if ( userPassword == formPassword ){


=
比较对象引用,而
.equals
比较字符串值。

不能使用
=
像这样试试

将指定的对象与此字符串进行比较,如果它们相等,则返回true。对象必须是具有相同顺序的相同字符的字符串实例

 if ( userPassword.equals(formPassword)){
    // do some stuff
  }

将指定的字符串与此字符串进行比较,忽略字符的大小写,如果它们相等,则返回true

 if(userPassword.equalsIgnoreCase(formPassword))
 {
     //do some stuff
  }

JAVA
中,要比较字符串,应使用:

if(userPassword.equals(formPassword)) {
   // they are equal
}
改变

在Java中,
String
比较是通过
.equals()
完成的。使用
==
比较对象引用,而不是它们的值


在JAVA中,您应该使用equals来判断不同字符串的值是否相等。
==用于判断字符串的对象指针,因此在您的情况下它只会返回false。

使用string.equals();或字符串。equalsIgnoreCase();这与Android无关,但是Google在Java引用类型上。。。
if(userPassword.equals(formPassword)) {
   // they are equal
}
if ( userPassword == formPassword ){
if ( userPassword.equals(formPassword)){