java.lang.RuntimeException: Cannot create an instance of class com.example.demo.MyViewModel
时间: 2023-12-27 10:03:15 浏览: 256
一个javademo
这个问题通常是由于缺少无参构造函数而导致的。在 Android 中,ViewModel 必须具有无参构造函数,因为它们是由 ViewModelProvider 实例化的。如果您在 ViewModel 中添加了参数化构造函数,那么您需要提供一个自定义 ViewModelProvider.Factory 来创建您的 ViewModel。您可以使用以下代码来创建一个自定义的 ViewModelProvider.Factory:
```
public class MyViewModelFactory implements ViewModelProvider.Factory {
private final SomeDependency someDependency;
public MyViewModelFactory(SomeDependency someDependency) {
this.someDependency = someDependency;
}
@Override
public <T extends ViewModel> T create(Class<T> modelClass) {
if (modelClass.isAssignableFrom(MyViewModel.class)) {
return (T) new MyViewModel(someDependency);
}
throw new IllegalArgumentException("Unknown ViewModel class");
}
}
```
然后,您可以使用以下代码来获取您的 ViewModel:
```
MyViewModelFactory factory = new MyViewModelFactory(someDependency);
MyViewModel viewModel = new ViewModelProvider(this, factory).get(MyViewModel.class);
```
阅读全文