2013-07-23 12 views
7

Ho un MapFragment che visualizza una mappaIllegalStateException dimensione della mappa non deve essere 0

se l'utente si allontana dalla attività (o il dispositivo va a dormire) con la mappa viene poi di nuovo onResume viene chiamato e mi muovo la mappa torna a un indicatore.

tuttavia quando mi muovo la macchina fotografica ottengo un'eccezione

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 

Questo è il mio movimento della fotocamera sul mio 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)); 
    } 

Se prendo il movimento della fotocamera che non va in crash, ma non lo fa tornare al punto di allontanarsi da esso o qualcosa del genere.

Ho verificato che lo map non sia nullo, quindi non so quale causa l'errore?

+1

Vedere questa risposta: http://stackoverflow.com/a/13692908/937715 –

+0

Come suggerito in precedenza, ho proposto [questo] [1]. [1]: http://stackoverflow.com/a/17825157/1755300 – unmultimedio

risposta

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

Questo dovrebbe essere abbastanza chiaro. Non è possibile chiamare

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

prima che il layout sia completo. Devi invece usare la versione 3 param.

Vedere la documentazione qui: newLatLngBounds

Aternatively si può ascoltare per il layout di completare invece di chiamare questo codice in onResume.

+0

Come posso ascoltare quando il layout è completo se – tyczj

+0

http://stackoverflow.com/questions/11795862/i-want -to-measure-the-altezza-of-the-listview-gethight-0/11.796.244 11.796.244 # –

Problemi correlati