Android MapFragment作为MvvmCross中的自定义控件

时间:2013-08-06 12:10:24

标签: xamarin.android xamarin mvvmcross

我正在开发一个项目,我可以使用MapFragment或SupportMapFragment作为自定义控件。 我尝试混合自定义控件(N-18)和Fraggle(N-26)教程,但我无法使其工作。

我的自定义控件类:

public class CustomMapView : MvxFragment
{
    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        var ignored = base.OnCreateView(inflater, container, savedInstanceState);
        return this.BindingInflate(Resource.Layout.CustomMapViewLayout, null);
    }
}

我的CustomMapViewLayout.axml

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment" />

在FirstView.axml中,我引用了CustomMapView:

<cc.CustomMapView
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

(我使用Setup.cs中的ViewNamespaceAbbreviations)

当我尝试部署时,我收到了以下错误:

MvxBind:找不到错误视图类型 - cc.CustomMapView(我确定命名空间是正确的) Android.Views.InflateException:正在加载...

有没有人设法解决这类问题?

1 个答案:

答案 0 :(得分:0)

据我所知,片段必须在FragmentActivity父项中使用,并且必须使用fragment xml标记或使用(支持)片段管理器方法之一加载父视图组中的动态加载

报告View Type Not Found - cc.CustomMapView的Mvx代码肯定不起作用 - 它正在寻找一个在该命名空间中继承Android View的类,而不是寻找Fragment

可能有办法编写更多“动态”片段xml代码 - 但是mvvmcross贡献者中没有一个已经挖掘出任何这些代码。现在,我认为你必须更“常规”地使用片段 - 就像N=26 sample

中显示的方式一样