使用AppCompatActivity后,在更新到MvvmCross 4.0后,DataBindings会中断

时间:2016-02-27 02:14:04

标签: data-binding xamarin xamarin.android mvvmcross android-appcompat

我在我的MvvmCross 3.5.1应用程序中使用了android工具栏,但是一旦我将其更新为MvvmCross 4.0,数据绑定就被破坏了。只要没有基本appcompat活动,我就必须实现自己的:

MvxActionBarEventSourceActivity : AppCompatActivity , IMvxEventSourceActivity
{
 ...
}

然后基于可绑定的mvx活动:

MvxActionBarActivity : MvxActionBarEventSourceActivity, IMvxAndroidView
{
 ...
}

应用程序启动很好,我可以看到我的工具栏,但绑定只是“沉默”,不起作用。相同的实现工作找到MvvmCross 3.5。

您可以在此处找到完整示例: https://dl.dropboxusercontent.com/u/19503836/MvvmCross4_Toolbar_Bindings.zip

请告知。

1 个答案:

答案 0 :(得分:5)

您需要覆盖OnCreateViewAttachBaseContext并使用MvxAppCompatActivityHelper来支持绑定:https://github.com/MvvmCross/MvvmCross-AndroidSupport/blob/master/MvvmCross.Droid.Support.V7.AppCompat/MvxAppCompatActivity.cs#L78

    public override View OnCreateView(View parent, string name, Context context, IAttributeSet attrs)
    {
        var view = MvxAppCompatActivityHelper.OnCreateView(parent, name, context, attrs);
        return view ?? base.OnCreateView(parent, name, context, attrs);
    }

    protected override void AttachBaseContext(Context @base)
    {
        base.AttachBaseContext(MvxContextWrapper.Wrap(@base, this));
    }

有一个示例可用于实现Toolbar而不是Actionbarhttps://github.com/MvvmCross/MvvmCross-AndroidSupport/tree/master/Samples