【发布时间】:2021-04-18 14:37:03
【问题描述】:
我目前正在从事一个大型项目,其中我有一个 ViewModelA 使用 MediatorLiveData 来观察其他 LiveData 源。 我想让这个 ViewModelA 从 ViewModelB 观察数据。
解决此问题的一种方法是让 Fragment 同时使用视图模型并在 ViewModelB 数据更改时更新 ViewModelA。
@AndroidEntryPoint
class FragmentA: Fragment() {
//ViewModels
private val viewModelA: ViewModelA by viewModels()
private val viewModelB: ViewModelB by viewModels()
onViewCreated... {
viewModelA.someFunction().observe{
viewModelB.someLiveData.value = it
}
}
}
但是我想出了另一个解决方案,我使用 Hilt 将 ViewModelB 注入 ViewModelA 的构造函数。
class ViewModelA @ViewModelInject constructor(
private val viewModelB: ViewModelB
) : ViewModel() {}
它目前有效,但我认为这不是一个好习惯。我在网上找不到太多关于这个问题的信息。 会不会有什么问题?
【问题讨论】:
标签: android viewmodel dagger-hilt