更新地图时Android谷歌地图上的NullPointer异常

更新地图时Android谷歌地图上的NullPointer异常,第1张

概述我最近在我的应用程序中包含了ACRA,其中包括一个GoogleMapSupportFragment.我现在得到一些崩溃报告,我无法在我的设备上重现.如果我想在地图上放置新的标记,应用程序会崩溃.每个标记都与一个位置连接,该位置还有其他信息(地址,名称,……).这是我管理GoogleMap的课程publicSignM

我最近在我的应用程序中包含了ACRA,其中包括一个GoogleMapSupportFragment.我现在得到一些崩溃报告,我无法在我的设备上重现.如果我想在地图上放置新的标记,应用程序会崩溃.每个标记都与一个位置连接,该位置还有其他信息(地址,名称,……).

这是我管理GoogleMap的课程

public Signmanager(MainActivity activity, GoogleMap map) {    mActivity = activity;    this.mMap = map;    initMap();}private voID initMap() {    mMap.setMapType(GoogleMap.MAP_TYPE_norMAL);    mMap.setMyLocationEnabled(true);    //...}

这是函数,它(有时)抛出NullPointerException.从AsyncTasks的Localbroadcast调用函数updateSignsInVIEw,它从服务器接收带有新标记的更新.

public voID updateSignsInVIEw(LocationWO[] mSignArray) {    if(mSignArray == null){        Log.e(DEBUG_TAG,"updateSignsInVIEw() -> mSignArray null");        return;    }    resetMap();  //delete some unneeded data and do mMap.clear()    mMarkerLocationMap = new HashMap<Marker, LocationWO>();    for (int i = 0; i < mSignArray.length; i++) {        //!!! this is the bad line: Signmanager.java:101          Marker marker = mMap.addMarker(createMapMarker(mSignArray[i]));         mMarkerLocationMap.put(marker, mSignArray[i]);    }} //create a new Marker with given information private MarkerOptions createMapMarker(LocationWO mLocation) {    MarkerOptions mMarker = new MarkerOptions()    .position(        new LatLng(mLocation.getmLatitude(), mLocation            .getmLongitude()))    .Title(mLocation.getmname()            .icon(BitmapDescriptorFactory.fromBitmap(icon));    return mMarker;}

这是我收到的LogCat:

USER_COMMENT=nullANDROID_VERSION=4.1.1APP_VERSION_name=0.9BRAND=htc_europePHONE_MODEL=HTC One XCUSTOM_DATA=STACK_TRACE=java.lang.NullPointerExceptionat maps.aj.bk.a(UnkNown Source)at maps.aj.bk.a(UnkNown Source)at maps.aj.al.a(UnkNown Source)at bcn.onTransact(Sourcefile:167)at androID.os.Binder.transact(Binder.java:326)at com.Google.androID.gms.maps.internal.IGoogleMapDelegate$a$a.addMarker(UnkNown Source)at com.Google.androID.gms.maps.GoogleMap.addMarker(UnkNown Source)at MYAPP.Signmanager.updateSignsInVIEw(Signmanager.java:101)at MYAPP.MainActivity.onReceive(MainActivity.java:389)at androID.support.v4.content.LocalbroadcastManager.executePendingbroadcasts(LocalbroadcastManager.java:297)at androID.support.v4.content.LocalbroadcastManager.accessprivate voID setUpMAPIfNeeded() {    if (mMap == null) {        mMap = ((SupportMapFragment) getSupportFragmentManager()            .findFragmentByID(R.ID.map_screen)).getMap();        if (mMap != null) {            setUpMap();        }    }}0(LocalbroadcastManager.java:46)at androID.support.v4.content.LocalbroadcastManager.handleMessage(LocalbroadcastManager.java:116)at androID.os.Handler.dispatchMessage(Handler.java:99)at androID.os.Looper.loop(Looper.java:155)at androID.app.ActivityThread.main(ActivityThread.java:5493)at java.lang.reflect.Method.invokeNative(Native Method)at java.lang.reflect.Method.invoke(Method.java:511)at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:795)at dalvik.system.NativeStart.main(Native Method)

我99.99%肯定,mMap不能为空.在onCreate()方法中设置mMap.

任何想法?

编辑:setupMap功能

解决方法:

这里的问题是传递的图标为null.

But if the Bitmap-Icon is null, shouldn’t it crash in the createMarker()method? Or will it crash later, because there is no icon tp place at the map?

是的,如果它直接将NPE抛入GoogleMap.addMarker或BitmapDescriptorFactory.fromBitmap中会更好,但除非您在图标上调用方法,否则它不会在您的createMapMarker中发生.

由于问题中没有相关代码,因此无法判断它为何为空,但我怀疑当用户离开应用程序时会终止该进程,并在以后重新创建它们.

总结

以上是内存溢出为你收集整理的更新地图时Android谷歌地图上的NullPointer异常全部内容,希望文章能够帮你解决更新地图时Android谷歌地图上的NullPointer异常所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1116414.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存