无法转换类型' Android.Support.V4.App.Fragment'到' Android.Gms.Maps.MapFragment'

时间:2014-04-19 00:44:21

标签: android google-maps android-fragments android-viewpager xamarin

我正在使用Xamarin并正在重新编码Google地图应用程序,以便将Android.Support.V4.App.Fragments与View寻呼机一起使用。

这是我的代码:

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'通过参考转换,拳击   转换,取消装箱转换,包装转换或null类型   转换(CS0039)

在这一行:

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

以及:

  

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

在这一行:

FragmentTransaction fragTx = FragmentManager.BeginTransaction()

我可以帮助您使用此代码吗?

提前致谢

2 个答案:

答案 0 :(得分:2)

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

_mapFragment = MapFragment.NewInstance(mapOptions);

使用SupportMapFragment

_mapFragment = SupportMapFragment.NewInstance(mapOptions);

希望有所帮助!

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

答案 1 :(得分:1)

您将使用支持库片段的类与不构建该层次结构的类混合(并且仅在3.0+上工作)。你不能这样做。您需要使用SupportMapFragment而不是map片段。