首页 > 解决方案 > 错误:没有找到适合方法 ViewModelProviders.of(Fragment,Factory) 的方法

问题描述

试图ViewModel通过ViewModelProviers.of()我的活动提供。

我的活动扩展AppCompatActivity了,但我仍然看到这个错误:

错误:没有找到适合的方法 of(StartActivity,StartViewModelFactory) 方法 ViewModelProviders.of(Fragment,Factory) 不适用(参数不匹配;StartActivity 无法转换为 Fragment)方法 ViewModelProviders.of(FragmentActivity,Factory) 不适用(参数不匹配;StartActivity 无法转换为 FragmentActivity)

Dagger 2 提供了依赖注入。下面是我的 Activity 类 StartActivity:

public class StartActivity extends AppCompatActivity {

    @Inject
    StartViewModelFactory startViewModelFactory;
    StartModelView startModelView;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        AndroidInjection.inject(this);
        super.onCreate(savedInstanceState);
        startModelView = ViewModelProviders.of(this, startViewModelFactory).
                get(StartViewModel.class);

}

ViewModelProviders.of()如果我理解正确,如果它们扩展 AppCompatActivity 或 Fragment ,您应该能够在方法中发送活动。但我得到这个错误。任何帮助,将不胜感激。

标签: androidmvvmviewmodeldagger-2

解决方案


你应该使用

   .get(StartModelView.class);

并不是

 .get(StartViewModelFactory.class);

android使用提供的工厂of()来生成ViewModel子类的实例


推荐阅读