我目前正在从事一个大型项目,其中有一个ViewModelA使用MediatorLiveData来观察其他LiveData数据源。
我希望这个ViewModelA能够观察ViewModelB的数据。
解决此问题的一种方法是使Fragment使用这两个ViewModel,并在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() {}
它目前能够工作,但我认为这不是一种好的做法。在网上找不到关于这个问题的太多信息。 这会引起任何问题吗?