在viewmodel类中,我看到了示例代码,其中构造函数将存储库中的参数作为参数。像这样:
public SampleViewModel(SampleRepository sampleRepository){ ...}
但是在 Activity 中,您可以使用此行创建一个viewmodel类ViewModelProviders.of(this).get(SampleViewModel.class)。如何将存储库作为参数传递给ViewModel?我也碰到过“依赖注入(inject)”的提法。作为一个经验不足的程序员,有人可以建议DI是否与我的问题有关吗?

最佳答案

获取 View 模型时,必须提供ViewModelProvider.Factory。

ViewModelProviders.of(this, new SampleViewModelFactory(sampleRepo)).get(SampleViewModel.class)

这是一个示例:
class SampleViewModelFactory implements ViewModelProvider.Factory {

    private final SampleRepository repo;

    @Inject
    public SampleViewModelFactory(SampleRepository repo) {
       this.repo = repo;
    }

    @Override
    public SampleViewModel create(Class modelClass) {
        return new SampleViewModel(repo);
    }
}

10-06 16:01