我正在使用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()
我可以帮助您使用此代码吗?
提前致谢
答案 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片段。