Java Android应用程序中谷歌地图的MarkerOptions.position中的空指针

Java Android应用程序中谷歌地图的MarkerOptions.position中的空指针,java,android,google-maps,Java,Android,Google Maps,我像个疯子一样在谷歌上搜索,但似乎没有人有这个确切的问题,到目前为止我也不知道如何重现这个问题 这不是一个重复的问题,谷歌地图是空的,我有正确的谷歌地图对象,它不是空的,请进一步阅读 我们有一个在4个不同屏幕上使用谷歌地图的应用程序,Crashlytics向我展示了很多类似这样的崩溃: Caused by java.lang.NullPointerException Attempt to invoke virtual method 'com.google.android.gms.maps.mod

我像个疯子一样在谷歌上搜索,但似乎没有人有这个确切的问题,到目前为止我也不知道如何重现这个问题

这不是一个重复的问题,谷歌地图是空的,我有正确的谷歌地图对象,它不是空的,请进一步阅读

我们有一个在4个不同屏幕上使用谷歌地图的应用程序,Crashlytics向我展示了很多类似这样的崩溃:

Caused by java.lang.NullPointerException
Attempt to invoke virtual method 'com.google.android.gms.maps.model.MarkerOptions com.google.android.gms.maps.model.MarkerOptions.position(com.google.android.gms.maps.model.LatLng)' on a null object reference
com.androidmapsextensions.lazy.LazyMarker.setPosition (LazyMarker.java:203)
com.androidmapsextensions.impl.DelegatingMarker.setPosition (DelegatingMarker.java:199)
java.lang.reflect.Method.invoke (Method.java)
android.util.ReflectiveProperty.set (ReflectiveProperty.java:118)
android.animation.PropertyValuesHolder.setAnimatedValue (PropertyValuesHolder.java:962)
android.animation.ObjectAnimator.animateValue (ObjectAnimator.java:990)
android.animation.ValueAnimator.animateBasedOnTime (ValueAnimator.java:1316)
android.animation.ValueAnimator.doAnimationFrame (ValueAnimator.java:1446)
android.animation.AnimationHandler.doAnimationFrame (AnimationHandler.java:146)
android.animation.AnimationHandler.-wrap2
android.animation.AnimationHandler$1.doFrame (AnimationHandler.java:54)
android.view.Choreographer$CallbackRecord.run (Choreographer.java:909)
android.view.Choreographer.doCallbacks (Choreographer.java:723)
android.view.Choreographer.doFrame (Choreographer.java:655)
android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:897)
android.os.Handler.handleCallback (Handler.java:789)
android.os.Handler.dispatchMessage (Handler.java:98)
android.os.Looper.loop (Looper.java:164)
android.app.ActivityThread.main (ActivityThread.java:6944)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)
stacktrace中没有类,如果从我的应用程序和我调用MarkerOptions.position的所有位置来看,类似如下:

Marker busPosition = googleMap.addMarker(new MarkerOptions()
                                        .position(busStopPosition)
                                        .flat(true)
                                        .title(busPositions.getRoute())
                                        .icon(bitmapDescriptor)
                                        .anchor(0.5f, 0.5f)
                                        .data(busPositions)
                                        .clusterGroup(2));
正如您所看到的,标记选项不可能为空,但根据例外情况,它是空的!这是怎么可能的?我怎样才能解决这个问题,或者甚至找出我们使用地图的4个地方中的哪个地方发生了这种情况

其他一些信息:

  • 这个异常似乎发生在应用程序处于后台和前台时
  • 这种情况发生在运行安卓4.4.2及以上版本的设备上

所有的帮助将不胜感激

不知何故,我尝试了你的代码,但一旦我调用
.data(总线位置)
,你的代码就变得不可接受了。顺便说一下,我们像这样添加地图标记,试试这个

googleMap.clear();
LatLng latlng = new LatLng(location.getLatitude(), location.getLongitude());
MarkerOptions options = new MarkerOptions()
      .position(latlng)
      .title(address);
googleMap.addMarker(options);

我想我已经找到了答案,但只有时间才能证明修复是否真的解决了问题

我一直在我的项目中使用
'com.androidmapsextensions:android地图扩展:2.2.0'
,并注意到该库中的
MarkerOptions
类包含一个“真实的”
MarkerOptions
对象,该对象有时明显为
null
。我将依赖项升级到了
'com.androidmapsextensions:android地图扩展:2.4.0'
,并将向我们的用户发布,希望这个问题不会再次出现


我会在几周内更新这篇文章,并告诉它是否有效:-)

尝试将
标记busPosition
更改为
标记选项busPosition
@L2\u Paver GoogleMap只有
添加标记(标记选项MarkerPositions)
busStopPosition看起来像这样:
最终Latling busStopPosition=新的Latling(busPositions.getLat(),busPositions.getLon())