【问题标题】:Shared ViewModel in MVIMVI 中的共享视图模型
【发布时间】:2021-06-27 09:35:16
【问题描述】:

如何在 MVI 架构中使用共享视图模型?它实际上是用于片段之间的通信,还是我们使用接口,或广播接收器?那部分我不清楚,我在任何地方都找不到。什么是最佳实践?谢谢大家

【问题讨论】:

  • 如果我正确理解您的担忧,您希望拥有一个用于多个活动/片段的 ViewModel。如果是这种情况,您可以查看依赖注入,它允许您将 ViewModel 创建为单例并在多个片段/活动中使用。在 viewModel 中,您可以保存应用的状态,在活动/片段中,您可以观察虚拟机的变化并根据这些变化采取行动

标签: android android-architecture-components android-mvvm android-mvp


【解决方案1】:

您应该使用 MVVM 架构,从下面的代码中获取参考,它将对您有所帮助。

//Fragment A
class FragmentA:Fragment {
private lateinit var viewModel:LoginViewModel

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    viewModel = 
ViewModelProvider(requireActivity()).get(LoginViewModel::class.java)
}
}

//Fragment B
class FragmentB:Fragment {
private lateinit var viewModel:LoginViewModel

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    viewModel = 
ViewModelProvider(requireActivity()).get(LoginViewModel::class.java)
}
}

//This is share viewModel class
class LoginViewModel: ViewModel{

}

【讨论】:

  • 好的,我明白了。但是如果我想在 Fragment 范围内有一个 viewModel,在 Activity 范围内有一个 viewModel 怎么办?把这两个东西放在 Fragment 里面好不好?因为我不想在 SharedViewModel 中写一些只涉及一个 Fragment 的函数,所以不需要在其他 Fragment 中看到它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
相关资源
最近更新 更多