无法将类型“Android.Support.V4.App.Fragment”转换为“Android.Gms.Maps.MapFragment”

Posted

技术标签:

【中文标题】无法将类型“Android.Support.V4.App.Fragment”转换为“Android.Gms.Maps.MapFragment”【英文标题】:Cannot convert type 'Android.Support.V4.App.Fragment' to 'Android.Gms.Maps.MapFragment' 【发布时间】:2014-06-03 13:45:49 【问题描述】:

我正在使用 Xamarin 并且正在重新编写 Google 地图应用程序以使用带有 View Pager 的 android.Support.V4.App.Fragments。

这是我的代码:

private void InitMapFragment()

    _mapFragment = FragmentManager.FindFragmentByTag("map") as MapFragment;
    if (_mapFragment == null)
    
        GoogleMapOptions mapOptions = new GoogleMapOptions()
            .InvokeMapType(GoogleMap.MapTypeNormal)
            .InvokeZoomControlsEnabled(true)
            .InvokeCompassEnabled(true);

        FragmentTransaction fragTx = FragmentManager.BeginTransaction();
        _mapFragment = MapFragment.NewInstance(mapOptions);
        fragTx.Add(Resource.Id.mapWithOverlay, _mapFragment, "map");
        fragTx.Commit();
    

因为我现在正在扩展 Activity 以使用 Android.Support.V4.App.Fragment,所以在编译时出现以下错误:

错误 CS0039:无法将类型“Android.Support.V4.App.Fragment”转换为 'Android.Gms.Maps.MapFragment' 通过引用转换,装箱 转换、拆箱转换、包装转换或空类型 转换 (CS0039)

在线:

_mapFragment = FragmentManager.FindFragmentByTag("map") as MapFragment

还有:

错误 CS0029:无法隐式转换类型 'Android.Support.V4.App.FragmentTransaction' 到 'Android.App.FragmentTransaction' (CS0029)

在线:

FragmentTransaction fragTx = FragmentManager.BeginTransaction()

我可以帮忙让这段代码正常工作吗?

提前致谢

【问题讨论】:

***.com/questions/18227540/… 【参考方案1】:

由于您使用的是 Android.Support.V4.App.Fragments 而不是使用 MapFragment 在

_mapFragment = MapFragment.NewInstance(mapOptions);

使用 SupportMapFragment

_mapFragment = SupportMapFragment.NewInstance(mapOptions);

希望有帮助!

您的 libs 文件夹和项目构建路径中应该有 android.support.v4.jar

【讨论】:

我需要做什么才能使用 SupportMapFragment 而不是 MapFragment?【参考方案2】:

您将使用支持库片段的类与不是从该层次结构构建的类(并且仅适用于 3.0+)混合在一起。你不能那样做。您需要使用 SupportMapFragment 而不是地图片段。

【讨论】:

使用 SupportMapFragment 需要哪些参考资料?

以上是关于无法将类型“Android.Support.V4.App.Fragment”转换为“Android.Gms.Maps.MapFragment”的主要内容,如果未能解决你的问题,请参考以下文章

ActionBarSherlock - android.support.v4.app.Fragment 类型无法解析。它是从所需的 .class 文件中间接引用的

错误:程序类型已存在:android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat

为啥此错误显示“不兼容的类型”。 “必需:android.support.v4.app.Fragment”?

android.support.v4.app.FragmentTabHost 无法转换为 android.widget.LinearLayout

Android Studio 和 android.support.v4.app.Fragment:无法解析符号

无法从 android.app.FragmentManager 转换为 android.support.v4.app.FragmentManager