我正在使用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”,
装箱转换,拆箱转换,换行转换或null
类型转换
错误CS1503:参数2:无法从中转换
'Android.Gms.Maps.SupportMapFragment'到'Android.App.Fragment'
我很确定我需要使用
SupportFragmentManager
而不是FragmentManager
,但是需要一些帮助。编辑
尝试使用SupportFragmentManager时,出现以下错误:
错误CS0103:名称'SupportFragmentManager'在
当前背景
提前致谢
最佳答案
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();
}
}
关于android - 使用SupportMapFragment而不是MapFragment,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23604536/