2013-04-28 304 views
0

嗨,我使用谷歌地圖V2,如果我運行的應用程序Android的谷歌地圖V2

public class SocMap extends Activity { 

} 

打開地圖,但我如果運行的應用程序

public class SocMap extends FragmentActivity { 

} 

應用程序崩潰

錯誤:

04-28 15:10:03.405: E/AndroidRuntime(12041): FATAL EXCEPTION: main 
04-28 15:10:03.405: E/AndroidRuntime(12041): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.socmap/com.example.socmap.SocMap}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment 
04-28 15:10:03.405: E/AndroidRuntime(12041): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment 
04-28 15:10:03.405: E/AndroidRuntime(12041): Caused by: java.lang.ClassCastException: com.google.android.gms.maps.MapFragment cannot be cast to android.support.v4.app.Fragment 

回答

1

如果您想在您的應用中實施Google地圖並且您希望您的應用程序針對API < 11,那麼您將不得不使用FragmentActivityFragmentActivitygoogle-support-v4庫的一部分,基本上爲API級別11之前的系統提供了片段支持。在這種情況下,您將不得不導入此庫。你可以通過閱讀這篇博客的第4步得到它是如何做的想法,我在谷歌地圖整合寫道:

Google Maps API V2

你一定要記住,如果這是你去,你應該使用的方式SupportMapFragment對象,而不是您目前正在使用的MapFragment

如果另一方面你開發你的應用程序到API的11級和更高,這一步是沒有必要的,你可以簡單地使用ActivityMapFragment

0

在你的佈局,它看起來像使用MapFragment你。使用android:name="com.google.android.gms.maps.SupportMapFragment",而不是在你的onCreate,得到MapFragment像這樣:

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapFragment); //your SupportMapFragment's id will need to be set to this in your layout.