2013-07-23 7 views
7

नहीं होना चाहिए कि मैं एक MapFragment कि एक नक्शाIllegalStateException नक्शे का आकार 0

उपयोगकर्ता गतिविधि से दूर हो जाता है तो प्रदर्शित होती है (या उपकरण के निष्क्रिय होने) के साथ नक्शा फिर वापस आता है onResume कहा जाता हो जाता है और मैं के लिए कदम नक्शा वापस मार्कर पर।

लेकिन जब मैं कैमरे के लिए कदम मैं एक अपवाद

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 

इस पर मेरा कैमरा आंदोलन है मिलता है मेरी 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)); 
    } 

अगर मैं कैमरे के आंदोलन यह दुर्घटना नहीं करता, लेकिन नहीं है बाहर ले जाना वे इस बिंदु से वापस चले गए या कुछ से दूर चले गए।

मैं यह सुनिश्चित करने के लिए जांच करता हूं कि map शून्य नहीं है इसलिए मुझे नहीं पता कि त्रुटि क्या हो रही है?

+1

इस जवाब देखें: http://stackoverflow.com/a/13692908/937715 –

+0

जैसा कि पिछले जवाब का सुझाव दिया, मैं [यह एक] प्रस्तावित [1]। [1]: http://stackoverflow.com/a/17825157/1755300 – unmultimedio

उत्तर

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

यह काफी स्पष्ट किया जाना चाहिए। लेआउट पूरा होने से पहले आप

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

पर कॉल नहीं कर सकते हैं। आपको इसके बजाय 3 param संस्करण का उपयोग करने की आवश्यकता है। newLatLngBounds

Aternatively लेआउट onResume में इस कोड को कॉल करने के बजाय पूरा करने के लिए आप सुन सकते हैं:

दस्तावेज़ यहां देखें।

+0

जब लेआउट हालांकि पूरा हो गया है – tyczj

+0

मैं कैसे सुन सकते हैं http://stackoverflow.com/questions/11795862/i-want करने वाली उपाय-ऊँचाई ऑफ द सूचीदृश्य-gethight -0/11,796,244 # 11,796,244 –

संबंधित मुद्दे