2013-07-23 20 views
7

Mam MapFragment który wyświetla mapęIllegalStateException rozmiar mapy nie powinno być 0

jeśli użytkownik odchodzi od aktywności (lub urządzenie przechodzi w stan uśpienia) z mapą następnie wraca onResume jest wywoływana i przenieść mapa z powrotem do znacznika.

jednak kiedy przenieść kamerę uzyskać wyjątek

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 

To jest mój ruch kamery na mój 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)); 
    } 

Gdybym wyjąć ruch kamery to nie psuje, ale nie wracają do punktu, w którym odeszli od tego czy coś takiego.

Sprawdzam, czy numer map nie jest pusty, więc nie wiem, co powoduje błąd?

+1

Zobacz tę odpowiedź: http://stackoverflow.com/a/13692908/937715 –

+0

Jak sugerowała poprzednia odpowiedź, zaproponowałem [ten] [1]. [1]: http://stackoverflow.com/a/17825157/1755300 – unmultimedio

Odpowiedz

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

To powinno być wystarczająco jasne. Przed ukończeniem układu nie można zadzwonić pod numer

map.animateCamera(CameraUpdateFactory.newLatLngBounds(new LatLngBounds(southWest,northEast),10)); 
. Zamiast tego musisz użyć wersji 3 param.

Zobacz dokumentację tutaj: newLatLngBounds

Aternatively można wysłuchać na układ, aby zakończyć zamiast nazywać ten kod w onResume.

+0

jak mogę słuchać, gdy układ jest kompletny, choć – tyczj

+0

http://stackoverflow.com/questions/11795862/i-want -do-środka-do-wysokości-of-the-listview-gethight-0/11796244 # 11796244 –

Powiązane problemy