我正在尝试在我的Android应用中实现Dagger 2,并且遇到了这个问题: 我使用的ActivityModels是使用ViewModelProvider.Factory的实现创建的(作为example here)。我通过注入工厂并调用:
将模型附加到活动viewModel = ViewModelProviders.of(this, viewModelFactory).get(MyActivityViewModel.class);
在应用程序的另一部分中,我正在尝试使用Command类对模型进行更改,因此我将MyActivityViewModel直接注入其中。
@Inject
public SearchCommand(MyActivityViewModel viewModel) {
super(viewModel);
}
问题:注入的ViewModel是视图模型的新实例,与Activity中实例化的实例不同。无论我尝试什么,我都无法解决这个问题......任何想法?
答案 0 :(得分:2)
我遇到了同样的问题,但是遵循ViewModelProviders的代码,我只是通过getActivity()为Fragment更改了ViewModelProviders.of(this, viewModelFactory)
的第一个参数。结果行是
viewModel = ViewModelProviders.of(getActivity(), viewModelFactory).get(MyActivityViewModel.class);