2015-04-15 2 views
-2

Я испытываю (на мой взгляд) действительно странную проблему. У меня есть Android Project в Android Studio, содержащий следующий код:Android skipping code

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

Этот код возвращает нуль во время выполнения и не дает никакого выхода. Курсор отладчика переходит из первого if-предложения (который возвращает true) непосредственно к последнему оператору return без объявления или инициализации любой из переменных.

Я также попытался удалить остальное, поскольку он должен работать без него, но это не имеет значения. Кто-нибудь есть идея, где проблема может быть?

EDIT: Я должен добавить: код работает отлично, без исходного if-предложения и возвращает действительный HttpResponse.

ответ

2

если AppSettings.isNetworkAvailable(context, showDialog) истинно, return null - правильное поведение.

Если вы хотите ввести еще часть, используйте:

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; 
    } 
} 
+1

вы пропустили один оператор возврата – Blackbelt

+1

Спасибо, что на самом деле была «проблема»! 3 парня, 1 час отладки, и никто не видел этого ... Я думаю, что отладчик прыгал был только из-за некоторой оптимизации операторов возврата. –