BottomSheetFragment 是否需要 ViewModel?

Does a BottomSheetFragment need ViewModel?

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

  1. 将 SharedViewModel 与创建此底部的片段一起使用 sheet?
  2. 根本不使用 ViewModel?
  3. 为 BottomSheet 创建一个单独的 ViewModel?
  4. 任何其他最佳做法
  1. 如果底部 sheet/dialog 与您的 "host" 片段紧密绑定(它共享一些特定的实时数据),并且它永远不会从其他片段创建,那么就可以了使用共享视图模型。
  2. 如果对话框非常简单(例如一个输入 + 2 个按钮),则可能不需要视图模型
  3. 如果对话框确实需要一个视图模型(即它获取并显示一些动态数据),那么一个单独的视图模型是有意义的

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

此外,有时编写单独的 ViewModel 来处理片段和底部变得乏味 sheet,其中 MainActivity ViewModel 也可以做完全相同的事情。

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