错误膨胀Mvx.MvxImageView [英] Error Inflating Mvx.MvxImageView

查看:58
本文介绍了错误膨胀Mvx.MvxImageView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在自定义控件中添加MvxImageView时遇到问题.

I am having a problem with inflating MvxImageView inside a custom control.

从研究中我发现了几名嫌疑犯

from the research I did I found several suspects

  1. 如果要添加,我应该添加什么? (我在Android地图视图膨胀错误中看到了这一点.
  2. 我创建的User控件全错了吗?我看到一个建议使用SetContentView()而不是inflate,因为它通过mvvmcross机制传递了indlate请求,但是自定义视图中没有这样的方法.

  1. Should I add if so to what? (i saw this in regards to the android map view inflate error.
  2. Am I creating the User control all wrong? I saw a recommendation to use SetContentView() instead of inflate because it passes the indlate request through the mvvmcross mechanisem but there is no such method in a custom view.

这是自定义控件的布局:

Here is the custom control layout:

<?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/Com.TasteITAndroidClient"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent" >
<Mvx.MvxImageView android:scaleType="centerCrop"
                  android:id="@+id/Image"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content" />

这是UserControl实现:

And here is the UserControl implementation:

public class UserControl : LinearLayout
{
    public UserControl(Context context, IAttributeSet attrs) : base(context,attrs)
    {
        LayoutInflater inflater = LayoutInflater.From(context);
        inflater.Inflate (Resource.Layout.UserControl, this);
    }
}

我在这里使用它:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
    android:id="@+id/myButton"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />
    <TestApp.UserControl 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>

我遇到以下异常:

Android.Views.InflateException:二进制XML文件第1行:错误膨胀了类Mvx.MvxImageView 在Android.Runtime.JNIEnv.CallObjectMethod(intptr,intptr,Android.Runtime.JValue [])[0x00024]在/Users/builder/data/lanes/monodroid-mlion-monodroid-4.8.0-branch/9486a4ec/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:145 在/Users/builder/data/lanes/monodroid-mlion-monodroid-4.8.0-branch/9486a4ec/source/monodroid/src/中的Android.Views.LayoutInflater.Inflate(int,Android.Views.ViewGroup)[0x00043] Mono.Android/platforms/android-8/src/generation/Android.Views.LayoutInflater.cs:422 在c:\ Users \ Amit \ Documents \ Projects \ TestApp \ TestApp \ UserControl.cs:20中的TestApp.UserControl..ctor(Android.Content.Context,Android.Util.IAttributeSet)[0x00011] at at(包装动态方法)object.bd915d4e-f205-49cd-a1e8-a0532b2db313(intptr,object []) 在/Users/builder/data/lanes/monodroid-mlion-monodroid-4.8.0-branch/9486a4ec/source/中的Java.Interop.TypeManager.n_Activate(intptr,intptr,intptr,intptr,intptr,intptr)[0x00070] monodroid/src/Mono.Android/src/Java.Interop/TypeManager.cs:141 在at(包装本机到托管的)Java.Interop.TypeManager.n_Activate(intptr,intptr,intptr,intptr,intptr,intptr) at at(wrappermanaged-to-native)object.wrapper_native_0x40819b9d(intptr,intptr,intptr,Android.Runtime.JValue [])< 0x00047> at at(包装委托调用).invoke_intptr_ this __ intptr_intptr_intptr_JValue [](intptr,intptr,intptr,Android.Runtime.JValue []) 在/Users/builder/data/lanes/monodroid-mlion-monodroid-4.8.0-branch/9486a4ec/source/中的Android.Runtime.JNIEnv.CallObjectMethod(intptr,intptr,Android.Runtime.JValue [])[0x00005] monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:141 在/Users/builder/data/lanes/monodroid-mlion-monodroid-4.8.0-branch/9486a4ec/source/monodroid/src/中的Android.Views.LayoutInflater.Inflate(int,Android.Views.ViewGroup)[0x00043] Mono.Android/platforms/android-8/src/generation/Android.Views.LayoutInflater.cs:422 在Cirrious.MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext.CommonInflate(int,Android.Views.ViewGroup,Cirrious.MvvmCross.Binding.Droid.Binders.MvxBindingLayoutInflatorFactory)[0x0003c]在c:\ Projects \ Misc \ MVVMCROSS \ C Cirrious.MvvmCross.Binding.Droid \ BindingContext \ MvxAndroidBindingContext.cs:58 在c:\ Projects \ Misc \ MVVMCROSS \ Cirrious \ Cirrious \ Cirrious.MvvmCross.Binding.Droid \ BindingContext \ MvxAndroidBindingContext中的Cirrious.MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext.BindingInflate(int,Android.Views.ViewGroup)[0x00001] cs:37 在Cirrious.MvvmCross.Binding.Droid.BindingContext.MvxBindingContextOwnerExtensions.BindingInflate(Cirrious.MvvmCross.Binding.BindingContext.IMvxBindingContextOwner,int,Android.Views.ViewGroup)[0x0000d]在c:\ Projects \ Misc \ MVVMCROSS \ Cirrious \ Cirrious \ MvvmCross.Binding.Droid \ BindingContext \ MvxBindingContextOwnerExtensions.cs:18 在c:\ Projects \ Misc \ MVVMCROSS \ Cirrious \ Cirrious.MvvmCross.Droid \ Views \ MvxActivity.cs:51中的Cirrious.MvvmCross.Droid.Views.MvxActivity.SetContentView(int)[0x00001] 在c:\ Users \ Amit \ Documents \ Projects \ TestApp \ TestApp \ MainActivity.cs:21中的TestApp.Main.InnerViewModelSet()[0x00001] 在at TestApp.BaseActivity 1<TestApp.LoginPageViewModel>.OnViewModelSet () <0x00087> at Cirrious.MvvmCross.Droid.Views.MvxActivity.set_ViewModel (Cirrious.MvvmCross.ViewModels.IMvxViewModel) [0x00009] in c:\Projects\Misc\MVVMCROSS\Cirrious\Cirrious.MvvmCross.Droid\Views\MvxActivity.cs:38 at Cirrious.MvvmCross.Views.MvxViewExtensionMethods.OnViewCreate (Cirrious.MvvmCross.Views.IMvxView,System.Func 1)[0x00055]在c:\ Projects \ Misc \ MVVMCROSS \ Cirrious \ Cirrious.MvvmCross \ Views \ MvxViewExtensionMethods.cs:35 在c:\ Projects \ Misc \ MVVMCROSS \ Cirrious \ Cirrious.Cirrious.MvvmCross.Droid.Views.MvxActivityViewExtensions.OnViewCreate(Cirrious.MvvmCross.Droid.Views.IMvxAndroidView,Android.OS.Bundle)[0x0006b]中Views \ MvxActivityViewExtensions.cs:50 在Cirrious.MvvmCross.Droid.Views.MvxActivityAdapter.EventSourceOnCreateCalled(object,Cirrious.CrossCore.Core.MvxValueEventArgs 1<Android.OS.Bundle>) [0x00001] in c:\Projects\Misc\MVVMCROSS\Cirrious\Cirrious.MvvmCross.Droid\Views\MvxActivityAdapter.cs:85 at at (wrapper delegate-invoke) System.EventHandler 11< Android.OS.Bundle>.> .invoke_void__this ___ object_TEventArgs(Object.Cirrious) 0x00067> 在at Cirrious.CrossCore.Droid.Views.MvxDelegateExtensionMethods.Raise(System.EventHandler 1<Cirrious.CrossCore.Core.MvxValueEventArgs 1>,object,Android.OS.Bundle)< 0x00113> 在c:\ Projects \ Misc \ MVVMCROSS \ CrossCore \ Cirrious.CrossCore.Droid \ Views \ MvxEventSourceActivity.cs:23中的Cirrious.CrossCore.Droid.Views.MvxEventSourceActivity.OnCreate(Android.OS.Bundle)[0x00009] 在TestApp.BaseActivity`1.OnCreate(Android.OS.Bundle)处<0x0005b> 在c:\ Users \ Amit \ Documents \ Projects \ TestApp \ TestApp \ MainActivity.cs:16中的TestApp.Main.OnCreate(Android.OS.Bundle)[0x00001] 在/Users/builder/data/lanes/monodroid-mlion-monodroid-4.8.0-branch/9486a4ec/source/monodroid/src/Mono中的Android.App.Activity.n_OnCreate_Landroid_os_Bundle_(intptr,intptr,intptr)[0x00010]中. Android/平台/android-8/src/generated/Android.App.Activity.cs:1561 at at(wrapper dynamic-method)object.302eab70-b743-4322-bd6e-c04ded2426ec(intptr,intptr,intptr) 在 在---托管异常堆栈跟踪的结尾- 在android.view.InflateException:二进制XML文件第1行:错误膨胀了类Mvx.MvxImageView 在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:698) 在android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 在android.view.LayoutInflater.inflate(LayoutInflater.java:489) 在android.view.LayoutInflater.inflate(LayoutInflater.java:396) 在android.view.LayoutInflater.inflate(LayoutInflater.java:352) 在mono.android.TypeManager.n_activate(本机方法)处 在mono.android.TypeManager.Activate(TypeManager.java:7) 在testapp.UserControl处(UserControl.java:29) 在java.lang.reflect.Constructor.constructNative(本机方法)处 在java.lang.reflect.Constructor.newInstance(Constructor.java:417)处 在android.view.LayoutInflater.createView(LayoutInflater.java:587) 在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 在android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 在android.view.LayoutInflater.inflate(LayoutInflater.java:489) 在android.view.LayoutInflater.inflate(LayoutInflater.java:396) 在android.view.LayoutInflater.inflate(LayoutInflater.java:352) 在testapp.Main.n_onCreate(本机方法)处 在testapp.Main.onCreate(Main.java:28) 在android.app.Activity.performCreate(Activity.java:5104) 在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 在android.app.ActivityThread.access $ 600(ActivityThread.java:141) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234) 在android.os.Handler.dispatchMessage(Handler.java:99) 在android.os.Looper.loop(Looper.java:137) 在android.app.ActivityThread.main(ActivityThread.java:5039) 在java.lang.reflect.Method.invokeNative处(本机方法) 在java.lang.reflect.Method.invoke(Method.java:511) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 在dalvik.system.NativeStart.main(本机方法) 在造成原因:java.lang.ClassNotFoundException:在路径:/data/app/TestApp.TestApp-1.apk上找不到类"Mvx.MvxImageView" 在dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65) 在java.lang.ClassLoader.loadClass(ClassLoader.java:501)处 在java.lang.ClassLoader.loadClass(ClassLoader.java:461)处 在android.view.LayoutInflater.createView(LayoutInflater.java:552) 在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 还有... 31

Android.Views.InflateException: Binary XML file line #1: Error inflating class Mvx.MvxImageView at Android.Runtime.JNIEnv.CallObjectMethod (intptr,intptr,Android.Runtime.JValue[]) [0x00024] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.8.0-branch/9486a4ec/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:145 at Android.Views.LayoutInflater.Inflate (int,Android.Views.ViewGroup) [0x00043] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.8.0-branch/9486a4ec/source/monodroid/src/Mono.Android/platforms/android-8/src/generated/Android.Views.LayoutInflater.cs:422 at TestApp.UserControl..ctor (Android.Content.Context,Android.Util.IAttributeSet) [0x00011] in c:\Users\Amit\Documents\Projects\TestApp\TestApp\UserControl.cs:20 at at (wrapper dynamic-method) object.bd915d4e-f205-49cd-a1e8-a0532b2db313 (intptr,object[]) at Java.Interop.TypeManager.n_Activate (intptr,intptr,intptr,intptr,intptr,intptr) [0x00070] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.8.0-branch/9486a4ec/source/monodroid/src/Mono.Android/src/Java.Interop/TypeManager.cs:141 at at (wrapper native-to-managed) Java.Interop.TypeManager.n_Activate (intptr,intptr,intptr,intptr,intptr,intptr) at at (wrapper managed-to-native) object.wrapper_native_0x40819b9d (intptr,intptr,intptr,Android.Runtime.JValue[]) <0x00047> at at (wrapper delegate-invoke) .invoke_intptr_this__intptr_intptr_intptr_JValue[] (intptr,intptr,intptr,Android.Runtime.JValue[]) at Android.Runtime.JNIEnv.CallObjectMethod (intptr,intptr,Android.Runtime.JValue[]) [0x00005] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.8.0-branch/9486a4ec/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:141 at Android.Views.LayoutInflater.Inflate (int,Android.Views.ViewGroup) [0x00043] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.8.0-branch/9486a4ec/source/monodroid/src/Mono.Android/platforms/android-8/src/generated/Android.Views.LayoutInflater.cs:422 at Cirrious.MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext.CommonInflate (int,Android.Views.ViewGroup,Cirrious.MvvmCross.Binding.Droid.Binders.MvxBindingLayoutInflatorFactory) [0x0003c] in c:\Projects\Misc\MVVMCROSS\Cirrious\Cirrious.MvvmCross.Binding.Droid\BindingContext\MvxAndroidBindingContext.cs:58 at Cirrious.MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext.BindingInflate (int,Android.Views.ViewGroup) [0x00001] in c:\Projects\Misc\MVVMCROSS\Cirrious\Cirrious.MvvmCross.Binding.Droid\BindingContext\MvxAndroidBindingContext.cs:37 at Cirrious.MvvmCross.Binding.Droid.BindingContext.MvxBindingContextOwnerExtensions.BindingInflate (Cirrious.MvvmCross.Binding.BindingContext.IMvxBindingContextOwner,int,Android.Views.ViewGroup) [0x0000d] in c:\Projects\Misc\MVVMCROSS\Cirrious\Cirrious.MvvmCross.Binding.Droid\BindingContext\MvxBindingContextOwnerExtensions.cs:18 at Cirrious.MvvmCross.Droid.Views.MvxActivity.SetContentView (int) [0x00001] in c:\Projects\Misc\MVVMCROSS\Cirrious\Cirrious.MvvmCross.Droid\Views\MvxActivity.cs:51 at TestApp.Main.InnerViewModelSet () [0x00001] in c:\Users\Amit\Documents\Projects\TestApp\TestApp\MainActivity.cs:21 at at TestApp.BaseActivity1<TestApp.LoginPageViewModel>.OnViewModelSet () <0x00087> at Cirrious.MvvmCross.Droid.Views.MvxActivity.set_ViewModel (Cirrious.MvvmCross.ViewModels.IMvxViewModel) [0x00009] in c:\Projects\Misc\MVVMCROSS\Cirrious\Cirrious.MvvmCross.Droid\Views\MvxActivity.cs:38 at Cirrious.MvvmCross.Views.MvxViewExtensionMethods.OnViewCreate (Cirrious.MvvmCross.Views.IMvxView,System.Func1) [0x00055] in c:\Projects\Misc\MVVMCROSS\Cirrious\Cirrious.MvvmCross\Views\MvxViewExtensionMethods.cs:35 at Cirrious.MvvmCross.Droid.Views.MvxActivityViewExtensions.OnViewCreate (Cirrious.MvvmCross.Droid.Views.IMvxAndroidView,Android.OS.Bundle) [0x0006b] in c:\Projects\Misc\MVVMCROSS\Cirrious\Cirrious.MvvmCross.Droid\Views\MvxActivityViewExtensions.cs:50 at Cirrious.MvvmCross.Droid.Views.MvxActivityAdapter.EventSourceOnCreateCalled (object,Cirrious.CrossCore.Core.MvxValueEventArgs1<Android.OS.Bundle>) [0x00001] in c:\Projects\Misc\MVVMCROSS\Cirrious\Cirrious.MvvmCross.Droid\Views\MvxActivityAdapter.cs:85 at at (wrapper delegate-invoke) System.EventHandler11<Android.OS.Bundle>>.invoke_void__this___object_TEventArgs (object,Cirrious.CrossCore.Core.MvxValueEventArgs1) <0x00067> at at Cirrious.CrossCore.Droid.Views.MvxDelegateExtensionMethods.Raise (System.EventHandler1<Cirrious.CrossCore.Core.MvxValueEventArgs1>,object,Android.OS.Bundle) <0x00113> at Cirrious.CrossCore.Droid.Views.MvxEventSourceActivity.OnCreate (Android.OS.Bundle) [0x00009] in c:\Projects\Misc\MVVMCROSS\CrossCore\Cirrious.CrossCore.Droid\Views\MvxEventSourceActivity.cs:23 at at TestApp.BaseActivity`1.OnCreate (Android.OS.Bundle) <0x0005b> at TestApp.Main.OnCreate (Android.OS.Bundle) [0x00001] in c:\Users\Amit\Documents\Projects\TestApp\TestApp\MainActivity.cs:16 at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) [0x00010] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.8.0-branch/9486a4ec/source/monodroid/src/Mono.Android/platforms/android-8/src/generated/Android.App.Activity.cs:1561 at at (wrapper dynamic-method) object.302eab70-b743-4322-bd6e-c04ded2426ec (intptr,intptr,intptr) at at --- End of managed exception stack trace --- at android.view.InflateException: Binary XML file line #1: Error inflating class Mvx.MvxImageView at at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:698) at at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 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 mono.android.TypeManager.n_activate(Native Method) at at mono.android.TypeManager.Activate(TypeManager.java:7) at at testapp.UserControl.(UserControl.java:29) at at java.lang.reflect.Constructor.constructNative(Native Method) at at java.lang.reflect.Constructor.newInstance(Constructor.java:417) at at android.view.LayoutInflater.createView(LayoutInflater.java:587) at at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) at at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 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 testapp.Main.n_onCreate(Native Method) at at testapp.Main.onCreate(Main.java:28) at at android.app.Activity.performCreate(Activity.java:5104) at at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) at at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) at at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) at at android.app.ActivityThread.access$600(ActivityThread.java:141) at at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 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:5039) 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:793) at at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) at at dalvik.system.NativeStart.main(Native Method) at Caused by: java.lang.ClassNotFoundException: Didn't find class "Mvx.MvxImageView" on path: /data/app/TestApp.TestApp-1.apk at at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65) 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:687) at ... 31 more at

推荐答案

我对您正在做的事情感到困惑-您似乎正在尝试在非数据绑定环境中膨胀数据绑定对象.

I'm confused about what you are doing - you seem to be trying to inflate data-bound objects inside a non-data-bound environment.

这两个有关使用子控件的教程可能会有所帮助:

These two tutorials on using sub-controls may help:

https://mvvmcross.wordpress中的N = 26中介绍了在MvvmCross中使用片段和MvxFrameControl. com/

或者,由于您的布局没有自定义功能-仅仅是XML-那么也许您可以考虑仅使用Android <include> xml块?参见 http://developer.android.com/training/improving-layouts/reusing-layouts.html

Alternatively, as your layout has no custom functionality - it's just XML - then maybe you could consider just using an Android <include> xml block? See http://developer.android.com/training/improving-layouts/reusing-layouts.html

这篇关于错误膨胀Mvx.MvxImageView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆