Google Maps API Android - NullPointerException - setBoundsInParent

问题描述:

在我们的Android移动应用程序(与Android版本4.0及更高版本兼容)中,我们使用Google Maps API V2。Google Maps API Android - NullPointerException - setBoundsInParent

在android.view.accessibility.AccessibilityNodeInfo类的setBoundsInParent方法中,我们从某些类型的设备(Android版本4.3,4.0和5.0)中的用户获取了一些错误报告,其中包含NullPointerException。

当用户尝试移动或放大地图时,应用程序崩溃。

该问题仅出现在某些用户 - 设备上。我们的大部分客户都没有这个问题。

这个问题似乎来自于使用谷歌地图API的setPadding方法来定位的谷歌徽标,它总是在地图上清晰可见:

@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)); 
       } 
       ... 
} 

卸下调用setPadding方法似乎为受影响的用户解决了问题,但对我们来说这不是一个有效的解决方案,因为我们需要使用此方法来定位Google徽标。

我们不能在我们的开发设备上重现这个问题,所以我们很难找到这个问题的真正起源。

你会发现下面的错误的完整堆栈跟踪。

有人有想法吗?

非常感谢您的回答。

此致敬礼。

堆栈跟踪在Android 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) 

堆栈跟踪在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

尝试从空字段'int android.graphics.Rect.left'读取空对象引用。检查你的代码(setBoundsInParent(AccessibilityNodeInfo.java:1012))或附加它们 – Xcihnegn 2015-02-06 09:01:23

+0

但是,谢谢你,这个类不在我们的代码中,而是在Android库的代码中。 – 2015-02-06 09:32:49

+0

你必须检查你的代码,也许你正在使用主UI做一些繁重的任务 – Xcihnegn 2015-02-06 09:48:23

的错误已被证实由谷歌:http://code.google.com/p/gmaps-api-issues/issues/detail?id=7619

最好的问候。