我遇到了(在我看来)非常奇怪的问题。我在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。
答案 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;
}
}