我试图在我的 Android 应用程序中实现 Dagger 2,但遇到了这个问题: 我使用的 ActivityModels 是通过 ViewModelProvider.Factory 的实现创建的(如 example here )。我通过注入(inject)工厂和调用将模型附加到 Activity 中:
viewModel = ViewModelProviders.of(this, viewModelFactory).get(MyActivityViewModel.class);
在应用程序的另一部分,我尝试使用 Command 类来更改模型,因此我将 MyActivityViewModel 直接注入(inject)到它。
@Inject
public SearchCommand(MyActivityViewModel viewModel) {
super(viewModel);
}
问题:注入(inject)的 ViewModel 是 View 模型的新实例,与 Activity 中实例化的实例不同。无论我尝试什么,我都无法解决这个问题……有什么想法吗?
最佳答案
我遇到了同样的问题,但是按照 ViewModelProviders 的代码,我只为 fragment 更改了 getActivity() 的 ViewModelProviders.of(this, viewModelFactory)
的第一个参数。结果行是
viewModel = ViewModelProviders.of(getActivity(), viewModelFactory).get(MyActivityViewModel.class);
关于android - Dagger 2 - 创建了同一个 View 模型的两个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48241802/