BottomSheetFragment 是否需要 ViewModel?
Does a BottomSheetFragment need ViewModel?
使用 Bottom Sheets 和 Dialog 时如何执行操作:
- 将 SharedViewModel 与创建此底部的片段一起使用 sheet?
- 根本不使用 ViewModel?
- 为 BottomSheet 创建一个单独的 ViewModel?
- 任何其他最佳做法
- 如果底部 sheet/dialog 与您的 "host" 片段紧密绑定(它共享一些特定的实时数据),并且它永远不会从其他片段创建,那么就可以了使用共享视图模型。
- 如果对话框非常简单(例如一个输入 + 2 个按钮),则可能不需要视图模型
- 如果对话框确实需要一个视图模型(即它获取并显示一些动态数据),那么一个单独的视图模型是有意义的
我将使用第一种方法使用 ShareViewModel,但如果您了解底层,共享 ViewModel 也是 ViewModel,这只是我们给它们的命名约定。
此外,有时编写单独的 ViewModel 来处理片段和底部变得乏味 sheet,其中 MainActivity ViewModel 也可以做完全相同的事情。
我的意思是,为了避免复杂性,我每个 activity 使用一个视图模型。现在,每当我想在片段或底部 sheet 中执行某些操作时,我只需在构造函数本身中传递视图模型。许多人会认为这是不好的做法,但它不是因为根据视图模型的概念,它只会根据 activity 的生命周期创建和销毁,并且始终只会创建一个实例。同样通过这样做,我可以对片段使用依赖注入(我不认为 DI 与导航组件一起工作,但我认为你明白我的意思)。
使用 Bottom Sheets 和 Dialog 时如何执行操作:
- 将 SharedViewModel 与创建此底部的片段一起使用 sheet?
- 根本不使用 ViewModel?
- 为 BottomSheet 创建一个单独的 ViewModel?
- 任何其他最佳做法
- 如果底部 sheet/dialog 与您的 "host" 片段紧密绑定(它共享一些特定的实时数据),并且它永远不会从其他片段创建,那么就可以了使用共享视图模型。
- 如果对话框非常简单(例如一个输入 + 2 个按钮),则可能不需要视图模型
- 如果对话框确实需要一个视图模型(即它获取并显示一些动态数据),那么一个单独的视图模型是有意义的
我将使用第一种方法使用 ShareViewModel,但如果您了解底层,共享 ViewModel 也是 ViewModel,这只是我们给它们的命名约定。
此外,有时编写单独的 ViewModel 来处理片段和底部变得乏味 sheet,其中 MainActivity ViewModel 也可以做完全相同的事情。
我的意思是,为了避免复杂性,我每个 activity 使用一个视图模型。现在,每当我想在片段或底部 sheet 中执行某些操作时,我只需在构造函数本身中传递视图模型。许多人会认为这是不好的做法,但它不是因为根据视图模型的概念,它只会根据 activity 的生命周期创建和销毁,并且始终只会创建一个实例。同样通过这样做,我可以对片段使用依赖注入(我不认为 DI 与导航组件一起工作,但我认为你明白我的意思)。