【问题标题】:Error: MapFragment cannot be cast to android.support.v4.app.Fragment错误:无法将 MapFragment 转换为 android.support.v4.app.Fragment
【发布时间】:2013-08-14 09:11:13
【问题描述】:

首先,我在这里注意了:Start FragmentActivity from Activity,现在我遇到了以下问题:

地图活动:

public class MapsActivity extends FragmentActivity {

private GoogleMap mMap;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.maps);
    setUpMapIfNeeded();
}
...

并希望从 MainActivity 中启动它:

startActivity(new Intent(this, MapsActivity.class));

Activity 在 Android Manifest 中注册:

<activity android:name="de.xbjoernx.gapp.MapsActivity"></activity>

错误

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{de.xbjoernx.gapp/de.xbjoernx.gapp.MapsActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
        at android.app.ActivityThread.access$600(ActivityThread.java:153)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5227)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
        at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
        at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:323)
        at android.app.Activity.setContentView(Activity.java:1881)
        at de.xbjoernx.gapp.MapsActivity.onCreate(MapsActivity.java:19)
        at android.app.Activity.performCreate(Activity.java:5104)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2262)
        ... 11 more
Caused by: java.lang.ClassCastException: com.google.android.gms.maps.MapFragment cannot be cast to android.support.v4.app.Fragment
        at android.support.v4.app.Fragment.instantiate(Fragment.java:394)
        at android.support.v4.app.Fragment.instantiate(Fragment.java:369)
        at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:272)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
        ... 20 more

有什么建议可以解决吗?

到目前为止谢谢:)

【问题讨论】:

  • 你能用&lt;activity android:name="MapsActivity"&gt;&lt;/activity&gt;试试吗?
  • Caused by: java.lang.ClassCastException: com.google.android.gms.maps.MapFragment cannot be cast to android.support.v4.app.Fragment

标签: android google-maps-android-api-2


【解决方案1】:

当您扩展 FragmentActivity 时,这表明您正在使用与较低版本的 android 兼容的 Support library v4。在您的 xml 文件中将 MapFragment 替换为 SupportMapFragmentSupportMapFragment 是与 Android 支持包一起使用的。 MapFragment 用于原生 API 级别 11 版本的片段。

【讨论】:

  • 谢谢!工作完美:) 只需使用 com.google.android.gms.maps.SupportMapFragment
  • @Bhavesh Patadiya 我的 xml 文件中已经有 SupportMapFragment 但我仍然有同样的问题:不可转换的类型;无法将 'android.support.v4.app.Fragment' 转换为 'com.google.android.gms.maps.SupportMapFragment
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-18
  • 1970-01-01
相关资源
最近更新 更多