
我最近在我的应用程序中包含了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异常所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)