【问题标题】:Mvvmcross Android - Rotating fragment view during viewmodel populationMvvmcross Android - 在视图模型填充期间旋转片段视图
【发布时间】:2014-01-03 16:58:02
【问题描述】:

当我尝试在旋转时手动重新水合片段视图模型时遇到问题。填充视图模型后,当我旋转片段时,一切似乎都正常,我所做的就是:

this.viewmodel = foo

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

我知道缺少源代码(在这篇文章中),但我想知道这是否应该在原则上起作用以及是否有办法解决绑定问题(尽管确实存在绑定上下文等)如果确实如此问题?

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

【问题讨论】:

  • 您是否对托管片段的活动中的配置更改做出反应?
  • 是的,我使用 OnSavedInstanceState 和 OnCreateView 来存储当前的 viewmodel。

标签: android xamarin xamarin.android mvvmcross


【解决方案1】:

我想我可能对我遇到的问题有一个初步的解决方案。我正在使用以下代码运行代码。

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

问题似乎是这个动作只被调用了一次,并且可能被触发的动作是针对旧视图而不是新视图。

我尝试在上面的代码之外添加以下代码,并且成功了

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

【讨论】:

    【解决方案2】:

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

    [活动( 标签 = “样品”, ConfigurationChanges = global::Android.Content.PM.ConfigChanges.Orientation |全局::Android.Content.PM.ConfigChanges.ScreenSize |全局::Android.Content.PM.ConfigChanges.KeyboardHidden )] 公共类 SampleActivity : MvxFragmentActivity { //... 公共覆盖无效 OnConfigurationChanged(global::Android.Content.Res.Configuration newConfig) { base.OnConfigurationChanged(newConfig); } }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多