0

我正在开发一个可以使用 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:Error View Type Not Found - cc.CustomMapView (我确定命名空间是正确的) Android.Views.InflateException:Loading...

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

4

1 回答 1

0

据我所知,片段必须在 FragmentActivity 父级中使用,并且必须使用fragmentxml 标签或使用(支持)片段管理器方法之一在父视图组中进行动态加载。

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

可能有一些方法可以编写更多“动态”片段 xml 代码 - 但 mvvmcross 贡献者还没有发现任何这些。现在,我认为您必须更“常规”地使用 Fragments - 就像N=26 示例中显示的方式一样

于 2013-08-07T02:20:04.837 回答