최근 내 애플리케이션에 ACRA이 포함되어 있는데 여기에는 GoogleMapSupportFragment
이 포함되어 있습니다. 이제 기기에서 재생할 수없는 충돌 보고서가 표시됩니다. 지도에 새 마커를 추가하려는 경우 앱이 다운됩니다. 모든 마커는 하나의 위치와 연결되어 있으며 자세한 정보 (주소, 이름, ....)가 있습니다. 지도를 업데이트하는 중 Android Google지도에서 NullPointer 예외가 발생했습니다.
NullPointerException
발생 기능, 인
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);
//...
}
를 관리하는 내 클래스입니다. updateSignsInView
함수는 AsyncTasks
에서 LocalBroadcast
으로 호출되며 서버에서 새로 업데이트 Markers
을받습니다. mMap
가 null
을 할 수없는, 내가 99,9 % 확신
USER_COMMENT=null
ANDROID_VERSION=4.1.1
APP_VERSION_NAME=0.9
BRAND=htc_europe
PHONE_MODEL=HTC One X
CUSTOM_DATA=
STACK_TRACE=java.lang.NullPointerException
at 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$1.onReceive(MainActivity.java:389)
at android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:297)
at android.support.v4.content.LocalBroadcastManager.access$000(LocalBroadcastManager.java:46)
at android.support.v4.content.LocalBroadcastManager$1.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)
: 여기
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;
}
내가받은 로그 캣입니다. mMap은 onCreate() 메소드에서 설정됩니다.
누구나 아이디어가 있으십니까?
편집 : setupMap 기능
private void setUpMapIfNeeded() {
if (mMap == null) {
mMap = ((SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map_screen)).getMap();
if (mMap != null) {
setUpMap();
}
}
}
BitmapDescriptorFactory.fromBitmap (아이콘)의 아이콘은 무엇입니까?어디서 초기화합니까? –
mmh ... 좋은 지적. appstart에'icon'이 (인터넷에서)로드되고'icon'에 대한 참조가'LocationWO'-Model에 저장됩니다. 그러나'Bitmap-Icon'가'null'이라면'createMarker()'메소드에서 충돌이 발생하지 않아야합니까? 지도에 '아이콘'이 없기 때문에 나중에 충돌이 발생합니까? – longilong