2015-02-06 7 views
5

W naszej mobilnej aplikacji na Androida (zgodnej z wersjami Androida 4.0 i nowszymi) korzystamy z Google Maps API V2.Google Maps API Android - NullPointerException - setBoundsInParent

Otrzymujemy zgłoszenia błędów od użytkowników na niektórych urządzeniach (wersje Androida 4.3, 4.4 i 5.0) z NullPointerException w metodzie setBoundsInParent klasy android.view.accessibility.AccessibilityNodeInfo.

Aplikacja ulega awarii, gdy użytkownik próbuje przesunąć lub przybliżyć mapę.

Problem występuje tylko w przypadku niektórych użytkowników - urządzeń. Większość naszych klientów nie ma tego problemu.

Problem wydaje się pochodzić z wykorzystaniem metody setPadding Google Maps API, aby umieścić logo Google tak, że zawsze jest wyraźnie widoczne na mapie:

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
       ... 
     // Initialize map 
     ...  
     // Sets the padding for the map 
       if(mMap!=null) 
       { 
        mMap.setPadding(0, DPI.toPixels(100), 0, DPI.toPixels(100)); 
       } 
       ... 
} 

Usuwanie wezwanie do Wydaje się, że metoda setPadding rozwiązuje problem dla użytkowników, których dotyczy problem, ale nie jest to poprawne rozwiązanie, ponieważ musimy ustawić logo Google tą metodą.

Nie możemy odtworzyć tego problemu na naszych urządzeniach programistycznych, więc trudno nam znaleźć prawdziwe źródło tego problemu.

Poniżej znajduje się pełne zestawienie stosu błędu.

Czy ktoś ma pomysł?

Dziękuję bardzo z góry za odpowiedź.

Pozdrawiamy.

StackTrace na Androidzie 4.3 - 4,4

java.lang.NullPointerException 
at android.view.accessibility.AccessibilityNodeInfo.setBoundsInParent(AccessibilityNodeInfo.java:1012) 
at android.support.v4.view.a.k.c(SourceFile:819) 
at android.support.v4.view.a.i.b(SourceFile:1850) 
at com.google.maps.api.android.lib6.c.et.a(Unknown Source) 
at android.support.v4.widget.ab.a(SourceFile:56) 
at android.support.v4.widget.ac.a(SourceFile:717) 
at android.support.v4.view.a.x.a(SourceFile:112) 
at android.support.v4.view.a.ad.createAccessibilityNodeInfo(SourceFile:42) 
at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchAccessibilityNodeInfos(AccessibilityInteractionController.java:724) 
at android.view.AccessibilityInteractionController.findAccessibilityNodeInfoByAccessibilityIdUiThread(AccessibilityInteractionController.java:147) 
at android.view.AccessibilityInteractionController.access$300(AccessibilityInteractionController.java:49) 
at android.view.AccessibilityInteractionController$PrivateHandler.handleMessage(AccessibilityInteractionController.java:971) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5212) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 
at dalvik.system.NativeStart.main(Native Method) 

StackTrace na Android 5.0

java.lang.NullPointerException: Attempt to read from field 'int android.graphics.Rect.left' on a null object reference 
at android.view.accessibility.AccessibilityNodeInfo.setBoundsInParent(AccessibilityNodeInfo.java:1316) 
at android.support.v4.view.a.k.c(SourceFile:819) 
at android.support.v4.view.a.i.b(SourceFile:1850) 
at com.google.maps.api.android.lib6.c.et.a(Unknown Source) 
at android.support.v4.widget.ab.a(SourceFile:56) 
at android.support.v4.widget.ac.a(SourceFile:717) 
at android.support.v4.view.a.x.a(SourceFile:112) 
at android.support.v4.view.a.ad.createAccessibilityNodeInfo(SourceFile:42) 
at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchAccessibilityNodeInfos(AccessibilityInteractionController.java:894) 
at android.view.AccessibilityInteractionController.findAccessibilityNodeInfoByAccessibilityIdUiThread(AccessibilityInteractionController.java:155) 
at android.view.AccessibilityInteractionController.access$400(AccessibilityInteractionController.java:53) 
at android.view.AccessibilityInteractionController$PrivateHandler.handleMessage(AccessibilityInteractionController.java:1236) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5221) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
+0

Próba odczytu z pola "int android.graphics.Rect.left" na odwołaniu do obiektu zerowego. Sprawdź swoje kody (setBoundsInParent (AccessibilityNodeInfo.java:1012)) lub dołącz je – Xcihnegn

+0

Dziękuję jednak, że ta klasa nie jest w naszym kodzie, ale w kodzie biblioteki Androida. –

+0

Musisz sprawdzić swoje kody, być może używasz głównego interfejsu do wykonywania ciężkich zadań. – Xcihnegn

Odpowiedz