无法从Android.Support.V4.App.Fragment投射到SupportMapFragment

时间:2014-03-16 17:08:21

标签: xamarin.android supportmapfragment

我处于一种奇怪的情况,我无法将片段转换为SupportMapFragment。我已经阅读了8个关于类似问题的线程,这些问题都与我的问题无关。它们都混合了MapFragment和SupportMapFragment,或引用了Android.App而不是Android.Support.V4.App。

我在Mono(MvvmCross)。我的布局包含一个SupportMapFragment。

<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment" />

所以,这是我尝试从我的布局中获取SupportMapFragment的方法:

var theMap =  (SupportMapFragment) SupportFragmentManager
                                  .FindFragmentById(Resource.Id.map);

Cannot cast expression of type 'Android.Suport.V4.App.Fragment'
to type 'SupportMapFragment'

SupportMapFragment继承自android.support.v4.app.Fragment,这就是我觉得奇怪的原因。

我引用了Mono.Android.Support.v4Xamarin.Android.Support.V4

我注意到我的SupportFragmentManager来自global::Android.Support.V4.App而不是之前提到的两个程序集。

我的项目针对API 13到19,并在API 19中编译。

我正在使用Cirrious.MvvmCross.Droid.Fragging的预编译版本,因为组件中的版本无法构建。

简而言之:我从SupportFragmentManager得到的内容无法投放到SupportMapFragment

1 个答案:

答案 0 :(得分:0)

虽然我不想回答我自己的问题,但这个问题非常棘手,我会在记录变通办法方面做出贡献。为了让它工作,我:

  • 添加了GooglePlayServices组件
  • 添加了Android支持V4组件
  • 添加了Cirrous.MvvmCross.Droid.Fragging的原始源代码
  • 确保我只添加了引用的Xamarin.Android.Support.V4而不是Mono.Android.Support.V4

现在没有任何程序集重定向。