【问题标题】:MVVM shared state with animated viewsMVVM 与动画视图共享状态
【发布时间】:2019-03-25 03:23:41
【问题描述】:

假设我有 2 个片段 A 和 B。每个片段分别包含一个视图 viewA 和 viewB。默认情况下,这两个视图都是隐藏的。

有一个名为 sharedVM 的共享视图模型(链接到活动)

来自用户的事件 A 将用动画显示 viewA 并用动画隐藏 viewB(如果 viewB 可见) 来自用户的事件 B 将用动画显示 viewB 并用动画隐藏 viewA(如果 viewA 可见)

我想:

解决方案 1: 在 sharedVM 中使用 LiveData 状态来了解视图是隐藏还是可见。 但是当片段被销毁并重新创建时: 隐藏/显示动画会再次播放,这不好。

解决方案 2: 在 sharedVM 中使用 LiveDataEvent 来了解调度和触发动画。 但是当片段被销毁并重新创建时: 我不知道视图之前的状态...

什么是更好的方法?

【问题讨论】:

    标签: android mvvm fragment android-architecture-components android-livedata


    【解决方案1】:

    我认为,你需要:

    1. 在片段重新创建时手动恢复视图状态(根据LiveData 中的当前状态)
    2. 如果视图当前处于此状态,则使视图状态观察者忽略更改

    您可以在onViewCreated() 回调中执行此操作。此修复使您的第一个解决方案有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-14
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多