BottomSheetFragment是否需要ViewModel?

时间:2020-04-29 06:46:54

标签: android android-fragments mvvm viewmodel

使用底表和对话框时如何执行操作:

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我将通过使用ShareViewModel来采用第一种方法,但是如果您了解底层,则共享的ViewModel也是ViewModel,这只是我们为其赋予的名称约定。

有时候,编写单独的ViewModel来处理片段和底部工作表也变得很乏味,MainActivity ViewModel也可以做同样的事情。

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