无法将类型“Android.Support.V4.App.Fragment”转换为“Android.Gms.Maps.MapFragment”
Posted
技术标签:
【中文标题】无法将类型“Android.Support.V4.App.Fragment”转换为“Android.Gms.Maps.MapFragment”【英文标题】:Cannot convert type 'Android.Support.V4.App.Fragment' to 'Android.Gms.Maps.MapFragment' 【发布时间】:2014-06-03 13:45:49 【问题描述】:我正在使用 Xamarin 并且正在重新编写 Google 地图应用程序以使用带有 View Pager 的 android.Support.V4.App.Fragments。
这是我的代码:
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' 通过引用转换,装箱 转换、拆箱转换、包装转换或空类型 转换 (CS0039)
在线:
_mapFragment = FragmentManager.FindFragmentByTag("map") as MapFragment
还有:
错误 CS0029:无法隐式转换类型 'Android.Support.V4.App.FragmentTransaction' 到 'Android.App.FragmentTransaction' (CS0029)
在线:
FragmentTransaction fragTx = FragmentManager.BeginTransaction()
我可以帮忙让这段代码正常工作吗?
提前致谢
【问题讨论】:
***.com/questions/18227540/… 【参考方案1】:由于您使用的是 Android.Support.V4.App.Fragments 而不是使用 MapFragment 在
_mapFragment = MapFragment.NewInstance(mapOptions);
使用 SupportMapFragment
_mapFragment = SupportMapFragment.NewInstance(mapOptions);
希望有帮助!
您的 libs 文件夹和项目构建路径中应该有 android.support.v4.jar
【讨论】:
我需要做什么才能使用 SupportMapFragment 而不是 MapFragment?【参考方案2】:您将使用支持库片段的类与不是从该层次结构构建的类(并且仅适用于 3.0+)混合在一起。你不能那样做。您需要使用 SupportMapFragment 而不是地图片段。
【讨论】:
使用 SupportMapFragment 需要哪些参考资料?以上是关于无法将类型“Android.Support.V4.App.Fragment”转换为“Android.Gms.Maps.MapFragment”的主要内容,如果未能解决你的问题,请参考以下文章
ActionBarSherlock - android.support.v4.app.Fragment 类型无法解析。它是从所需的 .class 文件中间接引用的
错误:程序类型已存在:android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat
为啥此错误显示“不兼容的类型”。 “必需:android.support.v4.app.Fragment”?
android.support.v4.app.FragmentTabHost 无法转换为 android.widget.LinearLayout
Android Studio 和 android.support.v4.app.Fragment:无法解析符号
无法从 android.app.FragmentManager 转换为 android.support.v4.app.FragmentManager