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)
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
Dziękuję jednak, że ta klasa nie jest w naszym kodzie, ale w kodzie biblioteki Androida. –
Musisz sprawdzić swoje kody, być może używasz głównego interfejsu do wykonywania ciężkich zadań. – Xcihnegn