-1

我正在处理 Android 应用程序中的登录页面。

如您所知,应用程序必须检查用户名和密码是否有效,然后授予用户访问应用程序的权限。

我使用了以下代码:

...

EditText un = (EditText) findViewById(R.id.username1);

EditText pw = (EditText) findViewById(R.id.password1);

String u = un.getText().toString();

String p = pw.getText().toString();


String myUser = "user1";

String myPass = "pass1";

//////// Now on the click of the Login Button:


public void onClickL (View view){

if ( (u == myUser) && (p == myPass)) /////// move to a new activity

else ///////Display a warning message: Try again

}

我在两个 editText 字段中输入了正确的字符串,但是我总是收到警告消息。我不明白它有什么问题。

请帮忙 :)

4

4 回答 4

10

您应该使用 String 类的 equals() 方法来比较字符串。== 比较只比较对象引用。

if (p.equals("Password")) { 
    //Do stuff 
}

因此,您应该将其更改为:

if ((u.equals(myUser)) && (p.equals(myPass))) {
    // do stuff
}

有关这个经常混淆的主题的更多信息,请参见此处:如何比较 Java 中的字符串?

于 2013-07-24T01:51:10.723 回答
0

始终用于String.equals(string)比较字符串。==将比较引用是否相等,这不能按照您想要的字符串方式工作。

于 2013-07-24T01:52:49.007 回答
0

==这种情况下会对字符串进行对象比较,虽然String对象的值可能相同,但对象并不相同。因此我们使用 String.equals(string); 比较两个字符串对象的值。所以 if(u.equals(string))p.equal(string)可能是你正在寻找的。

于 2013-07-24T01:53:30.043 回答
0

由于 java 没有一些现代特性,所以 == 不适用于字符串。相反,它有点复杂。

要检查两个字符串是否相等,请在 if 语句中输入:

String.equals(otherString)

要比较长度,请使用 .length 方法来比较它们,您可以使用 ==。

谢谢。

于 2013-07-24T01:57:16.150 回答