0

对于 android 中的登录页面,我使用 php webservice 连接到服务器数据库。我将来自 php 服务的响应存储在一个字符串中。响应应该是成功或失败。但有时它既不返回成功也不返回失败。所以当时它显示空指针异常。我尝试如下,但它在行显示空指针异常

if (!response.equals(null) && response.equals("SUCCESS"))

当响应为空时。我该如何解决这个问题。请在这方面帮助我。

if (!response.equals(null) && response.equals("SUCCESS")) {
        Intent howis = new Intent(Login.this, Homepage.class);
        startActivity(in);
}
else if (response.equals("FAILED")) {
        new AlertDialog.Builder(Login1.this)
                .setMessage(
                        "Sorry!! Incorrect Username or Password")
                .setCancelable(false).setPositiveButton("OK", null)
                .show();
        password.setText("");
        username.requestFocus();
} else if (response.equals(null)) {
        new AlertDialog.Builder(Login1.this)
            .setMessage("Invalid email or password")
            .setCancelable(false).setPositiveButton("OK", null)
            .show();
        password.setText("");
        username.requestFocus();
} else {
        new AlertDialog.Builder(Login1.this)
            .setMessage("Please Try Again..")
            .setCancelable(false).setPositiveButton("OK", null)
            .show();
        password.setText("");
        username.requestFocus();
}
4

5 回答 5

2

如果您正在检查一个(其中没有任何内容)字符串,那么条件应该是:

if (response == null) {

} else if (response != null) {

}

如果您正在检查nullString (字符串中有 null 值),那么条件应该是:

if (response.equals("null")) {

} else {

}
于 2013-05-31T07:37:30.287 回答
1

你不能像equals()when it is那样使用 String 的方法null。您应该首先检查null( response == null)。我建议做

if (response == null) {
    //null
} else if (response.equals("SUCCESS")) {
    //success
} else if (response.equals("FAILED")) {
    //failed
} else {
    //neither of those
}

或者

if (!response == null && response.equals("SUCCESS")) {
    //success
} else if (!response == null && response.equals("FAILED")) {
    //failed
} else if (response == null) {
    //null
} else {
    //neither of those
}

第一种方法更短且不那么冗长,第二种方法将排序作为您的代码,这可以更好地理解代码。

于 2013-05-31T09:17:51.213 回答
0

Another possible workaround (works for me) is to avoid the null pointer exception by setting up a default value inside the layout xml:

android:text="sometext"

That is if your stuck :-)

于 2014-05-06T14:08:04.740 回答
0

你也可以使用

if(TextUtils.isEmpty(response))
{
// response is either null or empty
}

从文档:

public static boolean isEmpty (CharSequence str)
Returns true if the string is null or 0-length.
于 2013-05-31T07:56:40.163 回答
0

你可以简单地使用..

if (!response.equals("") && response.equals("SUCCESS"))
{
...
}
于 2013-05-31T07:57:38.600 回答