Android跳过代码

时间:2015-04-15 09:53:14

标签: java android

我遇到了(在我看来)非常奇怪的问题。我在Android Studio中有一个包含以下代码的Android项目:

if(AppSettings.isNetworkAvailable(context, showDialog)) {
return null;
}
else {

    HttpResponse httpResponse = null;
    AsyncHttpGet asyncHttpGet = new AsyncHttpGet(mHttpClient, mHttpContext);

    String url = BASE_URI + atPath;
    asyncHttpGet.execute(url);

    try {
        httpResponse = asyncHttpGet.get();
        System.out.println("Response: " + httpResponse);
    } catch (InterruptedException | ExecutionException e) {
        e.printStackTrace();
    }

    if(isAccepted(httpResponse)) {
        return httpResponse;
    } else {
        return null;
    }
}

此代码在运行时返回null并且不提供输出。调试器游标从第一个if子句(返回true)直接跳转到最后一个return语句,而不声明或初始化任何变量。

我也尝试删除其他没有它的应该工作,但这没有任何区别。有谁知道问题出在哪里?

编辑:我应该补充一点:代码在没有初始if子句的情况下工作正常,并返回一个有效的HttpResponse。

1 个答案:

答案 0 :(得分:2)

如果AppSettings.isNetworkAvailable(context, showDialog)为真,则return null是正确的行为。

如果要输入else部分,请使用:

if(AppSettings.isNetworkAvailable(context, showDialog)) {
    HttpResponse httpResponse = null;
    AsyncHttpGet asyncHttpGet = new AsyncHttpGet(mHttpClient, mHttpContext);

    String url = BASE_URI + atPath;
    asyncHttpGet.execute(url);

    try {
        httpResponse = asyncHttpGet.get();
        System.out.println("Response: " + httpResponse);
    } catch (InterruptedException | ExecutionException e) {
        e.printStackTrace();
    }

    if(isAccepted(httpResponse)) {
        return httpResponse;
    } else {
        return null;
    }
}