2013-07-23 7 views
7

sein Ich habe eine MapFragment, die eine Karte zeigtIllegalkartengröße sollte nicht 0

, wenn der Benutzer geht aus der Tätigkeit entfernt (oder das Gerät einschläft) mit der Karte kommt dann zurück onResume aufgerufen wird und ich bewegen die Karte zurück zu einem Marker.

jedoch, wenn ich die Kamera bewegen, erhalte ich eine Ausnahme

07-23 16:28:42.725: E/AndroidRuntime(19095): java.lang.RuntimeException: Unable to resume activity {ecm2.android/ecm2.android.EMGNoteMapActivity}: java.lang.IllegalStateException: Map size should not be 0. Most likely, layout has not yet occured for the map view. 
07-23 16:28:42.725: E/AndroidRuntime(19095): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2742) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2771) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2235) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at android.app.ActivityThread.access$600(ActivityThread.java:141) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at android.os.Handler.dispatchMessage(Handler.java:99) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at android.os.Looper.loop(Looper.java:137) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at android.app.ActivityThread.main(ActivityThread.java:5041) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at java.lang.reflect.Method.invokeNative(Native Method) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at java.lang.reflect.Method.invoke(Method.java:511) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at dalvik.system.NativeStart.main(Native Method) 
07-23 16:28:42.725: E/AndroidRuntime(19095): Caused by: java.lang.IllegalStateException: Map size should not be 0. Most likely, layout has not yet occured for the map view. 
07-23 16:28:42.725: E/AndroidRuntime(19095): at maps.as.i.b(Unknown Source) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at maps.ah.w.a(Unknown Source) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at maps.ah.s.a(Unknown Source) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at maps.ah.an.b(Unknown Source) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at bgc.onTransact(SourceFile:92) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at android.os.Binder.transact(Binder.java:310) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at com.google.android.gms.maps.internal.IGoogleMapDelegate$a$a.animateCamera(Unknown Source) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at com.google.android.gms.maps.GoogleMap.animateCamera(Unknown Source) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at ecm2.android.Fragments.EMGMap.centerOnNote(EMGMap.java:340) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at ecm2.android.Fragments.EMGMap.fetchMapSettings(EMGMap.java:283) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at ecm2.android.Fragments.EMGMap.onResume(EMGMap.java:289) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:917) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at android.support.v4.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:1820) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at android.support.v4.app.FragmentActivity.onPostResume(FragmentActivity.java:412) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at android.app.Activity.performResume(Activity.java:5195) 
07-23 16:28:42.725: E/AndroidRuntime(19095): at  android.app.ActivityThread.performResumeActivity(ActivityThread.java:2732) 
07-23 16:28:42.725: E/AndroidRuntime(19095): ... 12 more 

Diese auf meine Kamerabewegung ist mein onResume

if(map != null && northEast != null && southWest != null){ 
     map.animateCamera(CameraUpdateFactory.newLatLngBounds(new LatLngBounds(southWest,northEast),10)); 
    }else if(map != null && centerPoint != null){ 
     CameraPosition position = new CameraPosition.Builder() 
     .target(centerPoint).zoom(17).build(); 
     map.animateCamera(CameraUpdateFactory.newCameraPosition(position)); 
    } 

Wenn ich die Kamerabewegung nehmen es nicht abstürzt, aber nicht Geh zurück zu dem Punkt, von dem sie sich wegbewegten oder so.

Ich überprüfe, um sicherzustellen, dass map nicht null ist, also weiß ich nicht, was den Fehler verursacht?

+1

Siehe diese Antwort: http://Stackoverflow.com/a/13692908/937715 –

+0

Wie vorherige Antwort vorgeschlagen, schlug ich vor [diese] [1]. [1]: http://stackoverflow.com/a/17825157/1755300 – unmultimedio

Antwort

10
Caused by: java.lang.IllegalStateException: Map size should not be 0. Most likely, layout has not yet occured for the map view. 

Dies sollte klar genug sein. Sie können nicht

map.animateCamera(CameraUpdateFactory.newLatLngBounds(new LatLngBounds(southWest,northEast),10)); 

aufrufen, bevor das Layout abgeschlossen ist. Sie müssen stattdessen die 3-Param-Version verwenden.

finden Sie in der Dokumentation hier: newLatLngBounds

Aternatively Sie hören können für das Layout diesen Code zu vervollständigen, statt in onResume aufzurufen.

+0

wie kann ich hören, wenn das Layout obwohl – tyczj

+0

abgeschlossen ist http://stackoverflow.com/questions/11795862/i-want -zum Messen-der-Höhe-der-Listenansicht-Gethight-0/11796244 # 11796244 –

Verwandte Themen