android - Mvvmcross Android - 膨胀类时出错 : ClassNotFoundException

标签 android xamarin mvvmcross xamarin.android

尝试膨胀 xml 文件时,我的 OnViewModelSet() 函数出现错误。

打电话时

LayoutInflater inflater = LayoutInflater.From(this);
View mainView = inflater.Inflate(Resource.Layout.Main, null);

我收到“java.lang.ClassNotFoundException:Mvx.MvxBindableListView”

这是整个异常:

Android.Views.InflateException: Binary XML file line #1: Error inflating class Mvx.MvxBindableListView

 at Android.Runtime.JNIEnv.CallObjectMethod (intptr,intptr,Android.Runtime.JValue[]) [0x00024] in /Users/builder/data/lanes/monodroid-lion-bigsplash/0e0e51f9/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:145

at Android.Views.LayoutInflater.Inflate (int,Android.Views.ViewGroup) [0x0003e] in /Users/builder/data/lanes/monodroid-lion-bigsplash/0e0e51f9/source/monodroid/src/Mono.Android/platforms/android-12/src/generated/Android.Views.LayoutInflater.cs:543

at AndroidCornerstoneMobile.MainView.OnViewModelSet () [0x00010] in c:\Users\David\Documents\Work\AndroidXamarin\AndroidCornerstoneMobile\Views\MainView.cs:30

at at Cirrious.MvvmCross.Droid.Views.MvxActivityView`1<Core.ViewModels.MainViewModel>.set_ViewModel (Core.ViewModels.MainViewModel) <0x000bb>

at at Cirrious.MvvmCross.ExtensionMethods.MvxViewExtensionMethods.OnViewCreate<Core.ViewModels.MainViewModel> (Cirrious.MvvmCross.Interfaces.Views.IMvxView`1<Core.ViewModels.MainViewModel>,System.Func`1<Core.ViewModels.MainViewModel>) <0x00203>

at at Cirrious.MvvmCross.Droid.ExtensionMethods.MvxAndroidActivityExtensionMethods.OnViewCreate<Core.ViewModels.MainViewModel> (Cirrious.MvvmCross.Droid.Interfaces.IMvxAndroidView`1<Core.ViewModels.MainViewModel>) <0x00297>

at at Cirrious.MvvmCross.Droid.Views.MvxActivityView`1<Core.ViewModels.MainViewModel>.OnCreate (Android.OS.Bundle) <0x000d3>

at at Cirrious.MvvmCross.Binding.Droid.Views.MvxBindingActivityView`1<Core.ViewModels.MainViewModel>.OnCreate (Android.OS.Bundle) <0x000b7>

at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) [0x00010] in /Users/builder/data/lanes/monodroid-lion-bigsplash/0e0e51f9/source/monodroid/src/Mono.Android/platforms/android-12/src/generated/Android.App.Activity.cs:1837

at at (wrapper dynamic-method) object.8c1f4311-41e4-4a0f-98f2-454a6152589a (intptr,intptr,intptr) <IL 0x00017, 0x00043>

at 

at --- End of managed exception stack trace ---

at android.view.InflateException: Binary XML file line #1: Error inflating class Mvx.MvxBindableListView

at  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691)

at  at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)

at  at android.view.LayoutInflater.inflate(LayoutInflater.java:489)

at  at android.view.LayoutInflater.inflate(LayoutInflater.java:396)

at  at android.view.LayoutInflater.inflate(LayoutInflater.java:352)

at  at cirrious.mvvmcross.binding.droid.views.MvxBindingActivityView_1.n_onCreate(Native Method)

at  at cirrious.mvvmcross.binding.droid.views.MvxBindingActivityView_1.onCreate(MvxBindingActivityView_1.java:31)

at  at android.app.Activity.performCreate(Activity.java:4539)

at  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)

at  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2013)

at  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2083)

at  at android.app.ActivityThread.access$600(ActivityThread.java:134)

at  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1233)

at  at android.os.Handler.dispatchMessage(Handler.java:99)

at  at android.os.Looper.loop(Looper.java:137)

at  at android.app.ActivityThread.main(ActivityThread.java:4697)

at  at java.lang.reflect.Method.invokeNative(Native Method)

at  at java.lang.reflect.Method.invoke(Method.java:511)

at  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)

at  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)

at  at dalvik.system.NativeStart.main(Native Method)

at Caused by: java.lang.ClassNotFoundException: Mvx.MvxBindableListView

at  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)

at  at java.lang.ClassLoader.loadClass(ClassLoader.java:501)

at  at java.lang.ClassLoader.loadClass(ClassLoader.java:461)

at  at android.view.LayoutInflater.createView(LayoutInflater.java:552)

at  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)

at  ... 20 more

最佳答案

要膨胀 MvvmCross 类,您必须使用 MvxActivity 类提供的 BindingInflate 方法。最简单的方法是在 OnCreate()OnViewModelSet() 中调用 SetContentView()

这些方法通过 MvvmCross Binding 代码路由膨胀,该代码知道如何解释 Mvx. 缩写命名空间,并且知道如何解压 MvxBind 绑定(bind)语句。

默认的 Android 充气器不知道这些事情 - 所以我们不能只使用它。

关于android - Mvvmcross Android - 膨胀类时出错 : ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15374447/

相关文章:

c# - Android 4.4 - 发送短信一般失败 - 服务蓝牙链接

android - Citrus 支付网关 Android 集成

带有 Atlassian Bamboo 的 Android CI

c# - Android AlertDialog,不要在按键时关闭,而是在触摸时关闭

xaml - 按钮内的 Xamarin.Forms TextBlock。自定义文本换行

ios - MvvmLight 无法为键创建 Controller

MvvmCross DataBinding 修改 Android ListView 中的单个项目

android - Firebase 为特定子项返回 null 值,即使它存在

c# - 如何在 MvvmCross 4.0 中将 fragment 添加到后台?

ios - 无法在设备上部署应用程序