2016-07-14 4 views
0

У меня возникли проблемы с NullPointerException, когда я пытаюсь позвонить onConnectionFailed.NullPointerException при вызове onConnectionFailed

Я следил за рекомендациями для данной функции GoogleApi и обновлял свой обесцененный звонок.

Однако, когда я пытаюсь назвать это, он дает мне NullPointerException, хотя я думаю, что я накрыл все указатели и правильно их инициализировал.

Это моя onConnectionFailed реализация:

public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
    if (connectionResult.hasResolution()) { 
     try { 
      connectionResult.startResolutionForResult(this, RESOLVE_CONNECTION_REQUEST_CODE); 
     } catch (IntentSender.SendIntentException e) { 
      FailedConnection(); 
     } 
    } else { 
     GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance(); 
     int StatusCode = apiAvailability.isGooglePlayServicesAvailable(this); 
     apiAvailability.getErrorDialog(this, StatusCode, PLAY_SERVICES_RESOLUTION_REQUEST).show(); 
    } 
} 

Первоначально я думал, что это была проблема с глобальными переменными и локальными переменными, хотя я скопировал указатель вызова вниз к локальной области видимости, и она по-прежнему дает мне NullPointerException.

Это LogCat, если кто-то нуждается в нем:

y.phonebelt E/AndroidRuntime: FATAL EXCEPTION: main 
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65537, result=0, data=null} to activity {com.example.denny.phonebelt/com.example.denny.phonebelt.ViewingWindow}: java.lang.NullPointerException 
    at android.app.ActivityThread.deliverResults(ActivityThread.java:3500) 
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3543) 
    at android.app.ActivityThread.access$1200(ActivityThread.java:159) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:5419) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
    at com.example.denny.phonebelt.ViewingWindow.onConnectionFailed(ViewingWindow.java:214) 
    at com.google.android.gms.internal.zzpp.zza(Unknown Source) 
    at com.google.android.gms.internal.zzps.onActivityResult(Unknown Source) 
    at com.google.android.gms.internal.zzra.onActivityResult(Unknown Source) 
    at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:165) 
    at android.app.Activity.dispatchActivityResult(Activity.java:5563) 
    at android.app.ActivityThread.deliverResults(ActivityThread.java:3496) 
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3543)  
    at android.app.ActivityThread.access$1200(ActivityThread.java:159)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)  
    at android.os.Handler.dispatchMessage(Handler.java:99)  
    at android.os.Looper.loop(Looper.java:137)  
    at android.app.ActivityThread.main(ActivityThread.java:5419)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:525)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)  
    at dalvik.system.NativeStart.main(Native Method)  
+0

Какой номер строки 214 в приведенном выше фрагмент кода. – Tony

+0

Esse método está sendo chamado na Деятельность ou em um processo Assíncrono? Talvez o NullPointer seja por causa do contexto passado como 'this' –

+0

Ухх .... Я не понимаю португальский, извините. – Mildwood

ответ

0

Не могли бы вы, пожалуйста, попробуйте этот код?

Согласно DOCS, метод getErrorDialog() может возвращать нулевое значение, если errorCode == SUCCESS

public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
    if (connectionResult.hasResolution()) { 
     try { 
      connectionResult.startResolutionForResult(this, RESOLVE_CONNECTION_REQUEST_CODE); 
     } catch (IntentSender.SendIntentException e) { 
      FailedConnection(); 
     } 
    } else { 

     GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance(); 
     int StatusCode = apiAvailability.isGooglePlayServicesAvailable(this); 

     if(StatusCode != ConnectionResult.SUCCESS) 
      apiAvailability.getErrorDialog(this, StatusCode, PLAY_SERVICES_RESOLUTION_REQUEST).show(); 
    } 
} 

Другой вариант является connectionResult == null, но это не возможно, чтобы проверить, как вы определили его ..

Смежные вопросы