MvvmCross Android - 错误膨胀类Mvx.MvxBindableListView

时间:2012-11-22 14:06:10

标签: android mono xamarin.android mvvmcross

我在Mono for Android中使用MvvmCross的活动时遇到了麻烦。基本上,应用程序编译并运行,但是当我调用SetContentView时,我得到一个未处理的异常:

“Android.Views.InflateException:二进制XML文件行#1:错误膨胀类Mvx.MvxBindableListView”

在堆栈跟踪中,它提到未找到的类是原因。

这是我的活动:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Cirrious.MvvmCross.Droid.Views;
using WshLst.Core.ViewModels;
using WshLst.Core.Models;

namespace WshLst.MonoForAndroid.Views
{
    [Activity(Label = "Wsh Lst - Login")]
    public class LoginView : MvxActivityView<LoginViewModel>
    {
        ListView list;

        protected override void OnViewModelSet()
        {
            RequestWindowFeature(WindowFeatures.ActionBar);

            SetContentView(Resource.Layout.Page_LoginView);

            list = this.FindViewById<ListView>(Resource.Id.mvxList);

            list.ItemClick += (s, e) =>
            {
                var item = list.Adapter.GetItem(e.Position);

                var castItem = (Cirrious.MvvmCross.Binding.Droid.MvxJavaContainer)item;

                this.ViewModel.Login((WshLst.Core.Models.LoginPlatform)castItem.Object);
            };
        }
    }
}

2 个答案:

答案 0 :(得分:1)

TL;博士

您的活动需要继承MvxBindingActivityView而不是MvxActivityView

背景故事

MvvmCross内置于图层和模块中:

  • Cirrious.MvvmCross - 只提供核心INotifyPropertyChanged和导航
  • Cirrious.MvvmCross.Binding - 为Droid和Touch提供数据绑定
  • Cirrious.MvvmCross.Dialog - 让你的MonoTouch / DROID / 很快更多的对话助手
  • Cirrious.MvvmCross.AutoViews - 这可能有一天会为您提供自动默认的UI视图
  • 插件 - 每个插件都为您提供特定的功能 - 例如SQLite的

我们的想法是尝试为那些只想要最低限度的人提供一个“轻松”的核心框架,但为那些想要更多的人提供更复杂的框架。

这确实有一些名字可能会比较混乱下行...有更多的dll引用...和用户可以偶尔从错误级别的对象继承 - 这是你的问题在这里是什么:< / p>

  • 您从MvxActivityView继承了ViewModel
  • 但不是来自MvxBindingActivityView也有绑定支持。

有关Insert a Monogame view inside MvvmCross monodroid Activity

的2层内容的更多信息

答案 1 :(得分:0)

新原因:MvxBindableListView重命名为MvxListView。但到目前为止,上述情况令人困惑。因为我继承自MvxFragment,我认为这是原因,并试图理解和实现Stuart所写的内容......然后我记得有关重命名类的事情,然后很快发现:)