1

Mono for Android で MvvmCross のアクティビティを使用する際に問題が発生しています。基本的に、アプリはコンパイルおよび実行されますが、SetContentView を呼び出すとハンドルされない例外が発生します。

「Android.Views.InflateException: Binary XML file line #1: Error inflating class 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;dr

MvxBindingActivityViewあなたの活動は、代わりにから継承する必要がありますMvxActivityView

バックストーリー

MvvmCross はレイヤーとモジュールに組み込まれています。

  • Cirrious.MvvmCross - コア INotifyPropertyChanged とナビゲーションを提供するだけです
  • Cirious.MvvmCross.Binding - Droid と Touch のデータバインディングを提供します
  • Cirrious.MvvmCross.Dialog - モノタッチ/ドロイド/すぐに多くのダイアログ ヘルパーを提供します
  • Cirious.MvvmCross.AutoViews - これにより、いつの日か自動的にデフォルトの UI ビューが提供される可能性があります
  • プラグイン - 各プラグインは特定の機能を提供します - 例: SQLite

アイデアは、最低限のものだけを望む人には「軽い」コア フレームワークを提供しようとすることですが、より多くを望む人にはより洗練されたフレームワークを提供することです。

これには、一部の名前が混乱する可能性があるという欠点があります...参照するdllが増える...そして、ユーザーが間違ったレベルのオブジェクトから継承することがあります-これが問題の原因です:

  • あなたは継承しMvxActivityViewていたViewModel
  • ただし、どちらからMvxBindingActivityViewでもバインド サポートはありません。

Insert a Monogame view inside MvvmCross monodroid Activityに、2 つのレイヤーの内容に関するもう少し詳しい情報があります。

于 2012-11-22T14:22:44.847 に答える