2013-07-25 2 views
1

У меня возникла проблема с раздуванием MvxImageView внутри настраиваемого элемента управления.Ошибка Inflating Mvx.MvxImageView

из исследования я сделал я нашел несколько подозреваемых

  1. Должен ли я добавить, если так к чему? (я видел это в связи с ошибкой надувания карты андроида.
  2. Я создал пользовательский контроль, все неправильно? Я видел рекомендацию использовать SetContentView() вместо надувания, потому что он передает запрос indlate через механизм mvvmcross, но нет такого метода в настраиваемое представление

    Вот макет пользовательского элемента управления:.

    <?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" /> 
    

А вот UserCon Реализация Троль:

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: Binary строки XML файл # 1: Ошибка раздувания класса Mvx.MvxImageView на 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 на Android.Views.LayoutInflater.Inflate (int, Android.Views.ViewGroup) [0x00043] в /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 в TestApp.UserControl..ctor (Android.Content.Context, Android.Util.IAttributeSet) [0x00011] в c: \ Users \ Amit \ Documents \ Projects \ TestApp \ TestApp \ UserControl.cs: 20 at at (wrapper dynamic-method) object.bd915d4e-f205-49cd-a1e8-a0532b2db313 (intptr, object []) в Java.Interop.TypeManager.n_Activate (intptr, intptr, intptr, intptr, intptr, intptr) [0x00070] в /Users/builder/data/lanes/monodroid-mlion-monodroid-4.8.0-branch/9486a4ec/source/monodroid/src/Mono.Android/src/Java.Interop /TypeManager.c s: 141 at at (wrapper native-to-managed). Java.Interop.TypeManager.n_Activate (intptr, intptr, intptr, intptr, intptr, intptr) at at (оболочка, управляемая навстречу) object.wrapper_native_0x40819b9d (intptr) , IntPtr, IntPtr, Android.Runtime.JValue []) < 0x00047> в точке (оберточной делегата-активизаци) .invoke_intptr_ этот __intptr_intptr_intptr_JValue [] (IntPtr, IntPtr, IntPtr, Android.Runtime.JValue []) в Android.Runtime.JNIEnv.CallObjectMethod (intptr, intptr, Android.Runtime.JValue []) [0x00005] в /Users/builder/data/lanes/monodroid-mlion-monodroid-4.8.0-branch/9486a4ec/source/monodroid /src/Mono.Android/src/Runtime/JNIEnv.g.cs:141 на Android.Views.LayoutInflater.Inflate (int, Android.Views.ViewGroup) [0x00043] в/Пользователи/builder/data/lanes/monodroid -mlion-monodroid-4.8.0-отруби ch/9486a4ec/source/monodroid/src/Mono.Android/platform/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] в 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] в 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] в c: \ Projects \ Misc \ MVVMCROSS \ Cirrious \ Cirrious.MvvmCross.Binding.Droid \ BindingContext \ MvxBindingContextOwnerExtensions.cs: 18 в Cirrious.MvvmCross.Droid.Views.MvxActivity.SetContentView (int) [0x00001] в c: \ Проекты \ Разное \ MVVMCROSS \ Cirrious \ Cirrious.MvvmCross.Droid \ Views \ MvxActivity.cs: 51 в TestApp.Main.InnerViewModelSet() [0x00001] в c: \ Users \ Amit \ Documents \ P rojects \ TestApp \ TestApp \ MainActivity.cs: 21 at 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 at Cirrious. [0x0006b] в c: \ Projects \ Misc \ MVVMCROSS \ Cirrious \ Cirrious.MvvmCross.Droid \ Views \ MvxActivityViewExtensions .cs: ​​50 на Cirrious.MvvmCross.Droid.Views.MvxActivityAdapter.EventSourceOnCreateCalled (объект, Cirrious.CrossCore.Core.MvxValueEventArgs Android.OS.Bundle > > .invoke_void__this ___ object_TEventArgs (объект, Cirrious.CrossCore.Core.MvxValueEventArgs1) < 0x00067> at at Cirrious.CrossCore.Droid. Views.MvxDelegateExtensionMethods.Raise (System.EventHandler 1<Cirrious.CrossCore.Core.MvxValueEventArgs 1>, объект, Android.OS.Bundle) < 0x00113> at Cirrious.CrossCore.Droid.Views.MvxEventSourceActivity.OnCreate (Android.OS.Бундл) [0x00009] в c: \ Projects \ Misc \ MVVMCROSS \ CrossCore \ Cirrious.CrossCore.Droid \ Views \ MvxEventSourceActivity.cs: 23 at at TestApp.BaseActivity`1.OnCreate (Android.OS.Bundle) < 0x0005b> на TestApp.Main.OnCreate (Android.OS.Bundle) [0x00001] в c: \ Users \ Amit \ Documents \ Projects \ TestApp \ TestApp \ MainActivity.cs: 16 на Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr, intptr, intptr) [0x00010] в /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 (обертка er dynamic-method) object.302eab70-b743-4322-bd6e-c04ded2426ec (intptr, intptr, intptr) at at --- Конец трассировки стека управляемых исключений --- at android.view.InflateException: двоичный XML-файл строка # 1: ошибка раздувания класса Mvx.MvxImageView на android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:698) at at android.view.LayoutInflater.rInflate (LayoutInflater.java:746) at android.view .LayoutInflater.inflate (LayoutInflater.java:489) at android.view.LayoutInflater.inflate (LayoutInflater.java:396) at at android.view.LayoutInflater.inflate (LayoutInflater.java:352) at at mono. android.TypeManager.n_activate (собственный метод) at at mono.android.TypeManager.Activate (Ty peManager.java:7) at at testapp.UserControl. (UserControl.java:29) at at java.lang.reflect.Constructor.constructNative (собственный метод) at at java.lang.reflect.Constructor.newInstance (конструктор .java: 417) at at android.view.LayoutInflater.createView (LayoutInflater.java:587) at at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:687) at android.view.LayoutInflater.rInflate (LayoutInflater.java:746) at android.view.LayoutInflater.inflate (LayoutInflater.java:489) at android.view.LayoutInflater.inflate (LayoutInflater.java:396) at at android.view.LayoutInflater.inflate (LayoutInflater.java:352) at at testapp.Main.n_onCreate (собственный метод) 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 atroid.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2230) at atroid.app.ActivityThread.access $ 600 (ActivityThread.java:141) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1234) at at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper .loop (Looper.java:137) at at android.app.ActivityThread.main (ActivityThread.java:50 39) at at java.lang.reflect.Method.invokeNative (собственный метод) 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 (родной метод) at Причиненный: java.lang.ClassNotFoundException: Не нашел класс «Mvx.MvxImageView» по пути: /data/app/TestApp.TestApp-1.apk at at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:65) at в java.lang.ClassLoader.loadClass (ClassLoader.java:501) at at java.lang.ClassLoader.loadClass (ClassLoader.java:461) at android.view.LayoutInflater. CreateView (LayoutInflater.java:552) на в android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:687) на ... еще 31 в

+0

Я действительно не понимаю, чего вы пытаетесь достичь. Вы раздуваете представление, а затем просто бросаете его? В любом случае вы получаете «ClassNotFoundException», потому что он не может найти «Mvx.MvxImageView». – Cheesebaron

+0

@ Cheesebaron Возможно, я что-то делаю неправильно. Что вы имеете в виду, я раздуваю взгляд, а затем выбрасываю его? То, что я пытаюсь сделать, - создать эквивалент UserControl для моего приложения для Android Xamarin. Что я делаю не так. Это то, что я видел, как люди делали в нескольких статьях. –

ответ

1

Я смущен о том, что вы делаете - вы, кажется, чтобы попытаться раздуть связанные с данными объекты внутри среды, не связанной с данными.

Эти две обучающие программы по использованию суб-управления может помочь:

Альтернативно, как ваш макет не имеет пользовательские функции - я t просто XML - тогда, может быть, вы могли бы подумать только об использовании блока x12 для Android <include>? См. http://developer.android.com/training/improving-layouts/reusing-layouts.html

+0

Oh My god !!! Это именно то, что я искал !!! Большое спасибо, Там идет 5 часов тестирования и поиска. Огромное спасибо!!! –

Смежные вопросы