Mvvmcross Android - 在viewmodel填充期间旋转片段视图

时间:2014-01-03 16:58:03

标签: android xamarin xamarin.android mvvmcross

当我尝试在旋转时手动重新补充片段视图模型时,我遇到了问题。一旦我的视图模型被填充,当我旋转片段时,一切似乎都能正常工作,我所做的就是:

this.viewmodel = foo

但如果我尝试在填充期间(例如从Web服务)旋转片段,然后在填充完成之前重新附加存储的viewmodel,则视图似乎不能正确绑定。

我知道缺少来源(在这篇文章中),但我想知道这是否应该在原则上有效,如果有办法解决绑定问题(虽然存在绑定上下文等)如果确实如此问题?

如果我在填充之后再次旋转片段,则视图将正常填充。

2 个答案:

答案 0 :(得分:0)

我想我可能已经解决了我遇到的问题。我使用以下代码运行代码 - 。

TypedViewModel.PopulateAndRun(() =>
{
    DoSomething();
});

问题似乎是这个动作只被调用一次,可能被解雇的动作是旧视图而不是新视图。

我尝试在上面的代码之外添加以下代码,并且它有效

TypedViewModel.OnPopulated += () 
{
    DoSomething();
});

答案 1 :(得分:0)

解决此问题的一种方法是指示Android在配置更改时不要重新创建活动。确保在activity属性中指定了“ConfigurationChanges”并覆盖OnConfigurationChanged。

    [Activity(
        Label = "Sample",
        ConfigurationChanges = global::Android.Content.PM.ConfigChanges.Orientation | global::Android.Content.PM.ConfigChanges.ScreenSize | global::Android.Content.PM.ConfigChanges.KeyboardHidden
        )]
    public class SampleActivity : MvxFragmentActivity
    {
        //...

        public override void OnConfigurationChanged(global::Android.Content.Res.Configuration newConfig)
        {
            base.OnConfigurationChanged(newConfig);
        }
    }