【问题标题】:Does a BottomSheetFragment need ViewModel?BottomSheetFragment 是否需要 ViewModel?
【发布时间】:2020-08-13 04:26:24
【问题描述】:

使用Bottom Sheets和Dialog时如何进行操作:

  1. 将 SharedViewModel 与创建此底部工作表的片段一起使用?
  2. 根本不使用 ViewModel?
  3. 为 BottomSheet 创建单独的 ViewModel?
  4. 任何其他最佳做法

【问题讨论】:

    标签: android android-fragments mvvm viewmodel


    【解决方案1】:
    1. 如果底部工作表/对话框与您的“主机”片段紧密绑定(它共享一些特定的实时数据),并且永远不会从其他片段创建,则可以使用共享视图模型。
    2. 如果对话框非常简单(例如一个输入 + 2 个按钮),则可能不需要视图模型
    3. 如果对话框确实需要一个视图模型(即它获取并显示一些动态数据),那么单独的视图模型是有意义的

    【讨论】:

    • 我忘了检查你是否是正确答案,我花了一段时间(几个月)才意识到这一点;)
    【解决方案2】:

    我将使用第一种方法,使用 ShareViewModel,但如果您了解底层,共享 ViewModel 也是 ViewModel,它只是我们给它们的命名约定。

    此外,有时编写单独的 ViewModel 来处理 Fragment 和底部工作表会变得乏味,而 MainActivity ViewModel 也可以做完全相同的事情。

    我的意思是,为了避免复杂性,我为每个活动使用一个视图模型。现在,每当我想在片段或底部表中执行某些内容时,我只需在构造函数本身中传递视图模型。很多人会认为这是不好的做法,但这并不是因为根据视图模型的概念,它只会根据 Activity 的生命周期创建和销毁,并且始终只会创建一个实例。同样通过这样做,我可以对片段使用依赖注入(我认为 DI 不适用于导航组件,但我认为你明白了我的意思)。

    【讨论】:

      猜你喜欢
      • 2020-11-27
      • 2023-04-08
      • 2019-01-23
      • 1970-01-01
      • 2012-04-28
      • 2020-11-06
      • 2012-01-27
      • 2021-07-26
      • 1970-01-01
      相关资源
      最近更新 更多