Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Can';找不到MvxListItemView构造函数_Android_Xamarin_Mvvmcross - Fatal编程技术网

Android Can';找不到MvxListItemView构造函数

Android Can';找不到MvxListItemView构造函数,android,xamarin,mvvmcross,Android,Xamarin,Mvvmcross,我是Xamarin的新手,但需要创建一个Android应用程序,所以是时候学习了 我听说了MvvmCross,并认为这将是一个很好的补充,因为它似乎简化了一些事情 我创建了一个基本的应用程序,有一个文本框来显示,诸如此类的东西 然后,我尝试添加一个列表视图,使用示例 当我尝试使用MvxListItemView运行视图时 protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetConte

我是Xamarin的新手,但需要创建一个Android应用程序,所以是时候学习了

我听说了MvvmCross,并认为这将是一个很好的补充,因为它似乎简化了一些事情

我创建了一个基本的应用程序,有一个文本框来显示,诸如此类的东西

然后,我尝试添加一个列表视图,使用示例

当我尝试使用MvxListItemView运行视图时

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);
    SetContentView(Resource.Layout.ProcessFormView);
}
我得到这个错误

System.NotSupportedException:找不到具有 上的签名(Android.Content.Context、Android.Util.IAttributeSet) 键入MvvmCross.Binding.Droid.Views.MvxListItemView。请提供 缺少的构造函数

从我看来,构造函数是

public MvxListItemView(Context context, IMvxLayoutInflaterHolder layoutInflaterHolder, object dataContext, int templateId);
我找不到任何明显的区别,在我的,和演示

是否有什么东西我遗漏了,或者可能被忽略了

ProcessFormView.axml:

<?xml version="1.0" encoding="utf-8"?>
<Mvx.MvxListView xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:local="http://schemas.android.com/apk/res-auto"
             android:orientation="vertical"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             local:MvxBind="ItemsSource Form"
             local:MvxItemTemplate="@layout/FormItem" />

FormItem.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="40dp"
        android:text="Form Item" />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="40dp"
        local:MvxBind="Text Field" />
</LinearLayout>

在我看来,Android似乎找不到它正在寻找的
MvxListItemView
构造函数,因为它正在搜索错误的程序集。您在布局中使用的是
Mvx.MvxListView
,但这是一种快捷方式,要求您在
设置
类中注册名称空间缩写。有三种方法可以解决此问题:

选项1:AndroidViewAssembly

将布局中的
Mvx.MvxListView
更改为
MvxListView
。然后,您需要向Android提供用于查找
MvxListView
的程序集,这是通过
设置中的
AndroidViewAssemblys
覆盖完成的:

protected override IEnumerable<Assembly> AndroidViewAssemblies 
    => new List<Assembly>(base.AndroidViewAssemblies)
{
    typeof(MvvmCross.Binding.Droid.Views.MvxListView).Assembly,
    typeof(MvvmCross.Binding.Droid.Views.MvxListItemView).Assembly
};
protected override IDictionary<string, string> ViewNamespaceAbbreviations
    => new Dictionary<string, string>
{
    {
        "Mvx", "MvvmCross.Binding.Droid.Views"
    }
};
如果选择选项2,请确保布局保持不变(即仍然使用
Mvx.MvxListView

选项3:懒惰


解决此问题的最简单方法是通过将
Mvx.MvxListView
更改为
MvvmCross.Binding.Droid.Views.MvxListView
来完全限定布局中的命名空间。这里的缺点是,您需要完全限定您使用的每个MvvmCross控件,这既尴尬又混乱。

在我看来,Android似乎找不到它正在寻找的
MvxListItemView
构造函数,因为它正在搜索错误的程序集。您在布局中使用的是
Mvx.MvxListView
,但这是一种快捷方式,要求您在
设置
类中注册名称空间缩写。有三种方法可以解决此问题:

选项1:AndroidViewAssembly

将布局中的
Mvx.MvxListView
更改为
MvxListView
。然后,您需要向Android提供用于查找
MvxListView
的程序集,这是通过
设置中的
AndroidViewAssemblys
覆盖完成的:

protected override IEnumerable<Assembly> AndroidViewAssemblies 
    => new List<Assembly>(base.AndroidViewAssemblies)
{
    typeof(MvvmCross.Binding.Droid.Views.MvxListView).Assembly,
    typeof(MvvmCross.Binding.Droid.Views.MvxListItemView).Assembly
};
protected override IDictionary<string, string> ViewNamespaceAbbreviations
    => new Dictionary<string, string>
{
    {
        "Mvx", "MvvmCross.Binding.Droid.Views"
    }
};
如果选择选项2,请确保布局保持不变(即仍然使用
Mvx.MvxListView

选项3:懒惰


解决此问题的最简单方法是通过将
Mvx.MvxListView
更改为
MvvmCross.Binding.Droid.Views.MvxListView
来完全限定布局中的命名空间。这里的缺点是,您需要完全限定您使用的每个MvvmCross控件,这既尴尬又混乱。

Android项目的程序集链接设置是什么?i、 e.Properties->Android Options->Linker->LinkingLinking的下拉菜单是:“无”,你能成功运行演示吗?它正在打开并运行,没有显示任何内容。我还没有进入它,但可能与它没有加载提要或其他东西有关。但是,它不会在
SetContentView
上给出错误。好的,您可以在问题中包含ProcessFormView的内容和列表使用的项模板吗?Android项目的程序集链接设置是什么?i、 e.Properties->Android Options->Linker->LinkingLinking的下拉菜单是:“无”,你能成功运行演示吗?它正在打开并运行,没有显示任何内容。我还没有进入它,但可能与它没有加载提要或其他东西有关。但是,它没有在
SetContentView
上给出错误。好的,您能在问题中包含ProcessFormView的内容和列表使用的项目模板吗?我尝试了第2个,结果成功了。我从表单列表中获得了一个类名列表。我现在遇到了一个问题,我尝试更改模板,因此
local:MvxItemTemplate=“@layout/FormItemView”
。我重命名了axml文件。项目没有生成,文件“obj\Debug\android\bin\packaged\u resources”不存在。
如果我删除
local:MvxItemTemplate
它生成,但与它没有关系。我知道这不完全相关,但是,有什么想法吗?你有没有任何文件名中带有连字符的资源(布局/绘图表/等)?没有,我检查过,这是我在谷歌上搜索错误时发现的。我试了2号,结果成功了。我从表单列表中获得了一个类名列表。我现在遇到了一个问题,我尝试更改模板,因此
local:MvxItemTemplate=“@layout/FormItemView”
。我重命名了axml文件。项目没有生成,文件“obj\Debug\android\bin\packaged\u resources”不存在。
如果我删除
local:MvxItemTemplate
它生成,但与它没有关系。我知道这不完全相关,但是,有什么想法吗?你有没有任何文件名中带有连字符的资源(布局/绘图表/等)?没有,我检查过,这是我在谷歌上搜索错误时发现的。