ClassNotFoundException Mvx.MvxListView

时间:2016-10-05 13:47:01

标签: xamarin xamarin.android mvvmcross

我尝试MvxListViewMvxAppCompatActivity一起使用,但我总是得到:

  

InflateException:错误导致类Mvx.MvxListView   ClassNotFoundException:找不到类" Mvx.MvxListView

这是我的axml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.viniciusmaia.missaocarona"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <include
        layout="@layout/Toolbar" />

    <Mvx.MvxListView
        android:id="@+id/teste"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        app:MvxBind="ItemsSource Usuarios;ItemClick UsuarioClickCommand"
        app:MvxItemTemplate="@layout/usuarioitem"/>
</LinearLayout>

这是我的活动:

[Activity] 
public class UsuarioActivity : MvxAppCompatActivity<UsuarioViewModel>
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        SetContentView(Resource.Layout.UsuarioView);            

        var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);

        toolbar.Title = UsuarioMensagens.TITULO_Usuario;

        //SetSupportActionBar(toolbar);

        Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);

        ViewModel.Carregamento = new Carregamento(this);
        ViewModel.PreenchePagina();
    }
}

我尝试使用Mvx.MvxListviewMvxListView这样的帖子Binary XML file line #1: Error inflating class Mvx.MvxListView,但对我来说没有任何作用。

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:4)

Alex的答案中提到的

form.errors.clear()是一个在MvvmCross中绑定的自定义Mvx.MvxListView注册的快捷方式。这意味着,如果您的Inflater课程没有说明在哪里查找Setup,则快捷方式无效。

在这种情况下,我发现您正在使用Mvx,它来自其中一个支持包。您从那里继承了一个单独的安装程序,它会为您处理大量注册。它还会设置一些色彩感知的视图。

因此,在您的设置中,您应该继承MvxAppCompatSetup

MvxAppCompatActivity

这应该足以找到public class Setup : MvxAppCompatSetup { } 。如果没有,您可以尝试通过覆盖设置中的Mvx.MvxListView来添加更多缩写:

ViewNamespaceAbbreviations

这会使MvvmCross在您的axml文件中使用public class Setup : MvxAppCompatSetup { ... protected override IDictionary<string, string> ViewNamespaceAbbreviations new Dictionary<string, string> { {"Mvx", "MvvmCross.Binding.Droid.Views"}, {"MyViews", "My.Custom.Views"}, // add more abbreviations here }; } 作为前缀时在MvvmCross.Binding.Droid.Views中查找视图。

“Mvx”=&gt; “MvvmCross.Binding.Droid.Views”是默认值,可以与Mvx中的任何BindingInflater一起使用,也可以与MvxAppCompatSetup一起使用。

答案 1 :(得分:0)

尝试在您的axml文件中写Mvx.MvxListView而不是MvxListView

另外,您的xmlns:app="http://schemas.android.com/apk/res/com.viniciusmaia.missaocarona"实际上应该是xmlns:app="http://schemas.android.com/apk/res-auto"

要仔细检查的另一件事是确保您的Setup类派生自MvxAndroidSetup

答案 2 :(得分:0)

尝试在LinearLayout上替换此行

xmlns:app="http://schemas.android.com/apk/res/com.viniciusmaia.missaocarona"

用这个:

xmlns:app="http://schemas.android.com/apk/res-auto"
相关问题