1

我在 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);
            };
        }
    }
}
4

2 回答 2

1

tl;博士

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

背后的故事

MvvmCross 内置在层和模块中:

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

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

这样做的缺点是某些名称可能会令人困惑......有更多的 dll 可供参考......并且用户有时可以从错误的级别对象继承 - 这就是您的问题所在:

  • 你继承的MvxActivityView有一个ViewModel
  • 但它也没有MvxBindingActivityView具有约束力的支持。

在 MvvmCross monodroid Activity 中插入 Monogame 视图中的 2 层中有更多信息

于 2012-11-22T14:22:44.847 回答
0

新原因:MvxBindableListView 重命名为 MvxListView。但是上面的内容现在令人困惑。因为我是从 MvxFragment 继承的,所以我认为这是原因,并试图理解和实现 Stuart 所写的内容......然后我想起了一些关于重命名类的事情,然后很快就找到了 :)

于 2013-07-12T17:50:27.980 回答