使用SupportMapFragment而不是MapFragment

时间:2014-05-12 08:43:26

标签: android android-fragments xamarin supportmapfragment mapfragment

我正在使用Xamarin,我修改了Google Maps API 2示例以使用SupportMapFragment个对象而不是MapFragment个对象。

我能否对InitMapFragment功能有所帮助。

以下是代码:

private void InitMapFragment()
{
    _mapFragment = FragmentManager.FindFragmentByTag("map") as SupportMapFragment;
    if (_mapFragment == null)
    {
        GoogleMapOptions mapOptions = new GoogleMapOptions()
            .InvokeMapType(GoogleMap.MapTypeNormal)
            .InvokeZoomControlsEnabled(true)
            .InvokeCompassEnabled(true);

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

_mapFragment过去是MapFragment类型,但现在是SupportMapFragment

此外,该活动目前正在继承Activity,如果这是FragmentActivity,还是其他什么?

以下是我遇到的错误:

  

错误CS0039:无法转换类型' Android.App.Fragment'至   ' Android.Gms.Maps.SupportMapFragment'通过参考转换,   装箱转换,拆箱转换,换行或转换   类型转换

     

错误CS1503:参数2:无法转换   ' Android.Gms.Maps.SupportMapFragment'到' Android.App.Fragment'

我非常确定我需要使用SupportFragmentManager而不是FragmentManager,但我们需要一些帮助。

修改

尝试使用SupportFragmentManager时,出现以下错误:

  

错误CS0103:名称' SupportFragmentManager'不存在于   当前背景

提前致谢

1 个答案:

答案 0 :(得分:1)

SupportFramgentManager继承自FragmentActivity,因此请确保该活动扩展FragmentActivity。然后按如下方式修改代码:

private void InitMapFragment()
{
    _mapFragment = SupportFragmentManager.FindFragmentByTag("map") as SupportMapFragment;
    if (_mapFragment == null)
    {
        GoogleMapOptions mapOptions = new GoogleMapOptions()
            .InvokeMapType(GoogleMap.MapTypeNormal)
            .InvokeZoomControlsEnabled(true)
            .InvokeCompassEnabled(true);

        FragmentTransaction fragTx = SupportFragmentManager.BeginTransaction();
        _mapFragment = SupportMapFragment.NewInstance(mapOptions);
        fragTx.Add(Resource.Id.mapWithOverlay, _mapFragment, "map");
        fragTx.Commit();
    }
}