使用 AppCompatActivity 更新到 MvvmCross 4.0 后数据绑定被破坏
DataBindings are broken after update to MvvmCross 4.0 when using AppCompatActivity
我在我的 MvvmCross 3.5.1 应用程序中使用 android 工具栏,但是一旦我将它更新到 MvvmCross 4.0,数据绑定就被破坏了。只要没有基础 appcompat activity 我就必须自己实现:
MvxActionBarEventSourceActivity : AppCompatActivity , IMvxEventSourceActivity
{
...
}
然后是基础可绑定 mvx activity:
MvxActionBarActivity : MvxActionBarEventSourceActivity, IMvxAndroidView
{
...
}
应用程序启动正常,我可以看到我的工具栏,但绑定只是 "silent" 并且不起作用。 MvvmCross 3.5 的实现同样有效。
您可以在此处找到完整示例:
https://dl.dropboxusercontent.com/u/19503836/MvvmCross4_Toolbar_Bindings.zip
请指教
您需要覆盖 OnCreateView
和 AttachBaseContext
并使用 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
而不是 Actionbar
:https://github.com/MvvmCross/MvvmCross-AndroidSupport/tree/master/Samples
我在我的 MvvmCross 3.5.1 应用程序中使用 android 工具栏,但是一旦我将它更新到 MvvmCross 4.0,数据绑定就被破坏了。只要没有基础 appcompat activity 我就必须自己实现:
MvxActionBarEventSourceActivity : AppCompatActivity , IMvxEventSourceActivity
{
...
}
然后是基础可绑定 mvx activity:
MvxActionBarActivity : MvxActionBarEventSourceActivity, IMvxAndroidView
{
...
}
应用程序启动正常,我可以看到我的工具栏,但绑定只是 "silent" 并且不起作用。 MvvmCross 3.5 的实现同样有效。
您可以在此处找到完整示例: https://dl.dropboxusercontent.com/u/19503836/MvvmCross4_Toolbar_Bindings.zip
请指教
您需要覆盖 OnCreateView
和 AttachBaseContext
并使用 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
而不是 Actionbar
:https://github.com/MvvmCross/MvvmCross-AndroidSupport/tree/master/Samples