Dagger 2 - 创建相同View模型的两个实例

时间:2018-01-13 16:24:56

标签: android viewmodel dagger-2 dagger

我正在尝试在我的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中实例化的实例不同。无论我尝试什么,我都无法解决这个问题......任何想法?

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,但是遵循ViewModelProviders的代码,我只是通过getActivity()为Fragment更改了ViewModelProviders.of(this, viewModelFactory)的第一个参数。结果行是

viewModel = ViewModelProviders.of(getActivity(), viewModelFactory).get(MyActivityViewModel.class);