我正在使用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'不存在于 当前背景
提前致谢
答案 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();
}
}