Android Can';找不到MvxListItemView构造函数
我是Xamarin的新手,但需要创建一个Android应用程序,所以是时候学习了 我听说了MvvmCross,并认为这将是一个很好的补充,因为它似乎简化了一些事情 我创建了一个基本的应用程序,有一个文本框来显示,诸如此类的东西 然后,我尝试添加一个列表视图,使用示例 当我尝试使用MvxListItemView运行视图时Android Can';找不到MvxListItemView构造函数,android,xamarin,mvvmcross,Android,Xamarin,Mvvmcross,我是Xamarin的新手,但需要创建一个Android应用程序,所以是时候学习了 我听说了MvvmCross,并认为这将是一个很好的补充,因为它似乎简化了一些事情 我创建了一个基本的应用程序,有一个文本框来显示,诸如此类的东西 然后,我尝试添加一个列表视图,使用示例 当我尝试使用MvxListItemView运行视图时 protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetConte
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
它生成,但与它没有关系。我知道这不完全相关,但是,有什么想法吗?你有没有任何文件名中带有连字符的资源(布局/绘图表/等)?没有,我检查过,这是我在谷歌上搜索错误时发现的。