如何使用MainViewModel的有参构造方法创建实例
时间: 2024-03-31 07:33:51 浏览: 109
如果MainViewModel有一个有参构造方法,你需要实现一个ViewModelProvider.Factory的接口,以便正确地创建实例。具体步骤如下:
1. 创建一个实现ViewModelProvider.Factory接口的类,例如:
```kotlin
class MainViewModelFactory(private val application: Application, private val param: String) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(MainViewModel::class.java)) {
return MainViewModel(application, param) as T
}
throw IllegalArgumentException("Unknown ViewModel class")
}
}
```
在上述代码中,我们创建了一个MainViewModelFactory类,它有一个构造函数,传入了Application和一个字符串类型的参数。在create方法中,我们检查传入的modelClass是否是MainViewModel类的子类,如果是,则返回通过有参构造函数创建的MainViewModel实例,否则抛出IllegalArgumentException异常。
2. 在Activity或Fragment中使用MainViewModelFactory创建MainViewModel实例,例如:
```kotlin
val factory = MainViewModelFactory(application, "Hello World")
val viewModel = ViewModelProviders.of(this, factory).get(MainViewModel::class.java)
```
在上述代码中,我们先创建了一个MainViewModelFactory实例,传入了Application和一个字符串类型的参数。然后,我们使用ViewModelProviders提供的of方法并传入factory参数,获取MainViewModel实例。
这样,你就成功地使用有参构造函数创建了MainViewModel实例。
阅读全文
相关推荐











