为什么视图模型工厂在我的项目中无法识别



我正在使用ViewModel开发一个android应用程序,但在我的projectviewmodelfactory错误下面出现了以下错误。

下面是我的ViewModel实现

import android.app.Activity
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.ViewModelStoreOwner
fun <T : ViewModel> Activity.obtainViewModel(viewModelClass: Class<T>): T {
val todoRepository = (this.application as TodoApplication).todoRepository
return ViewModelProvider(this as ViewModelStoreOwner, ViewModelFactory(todoRepository)).get(
viewModelClass
)
}

我想知道我在哪里造成错误。

低于我尝试过的

import android.app.Activity
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.ViewModelStoreOwner
fun <T : ViewModel> Activity.obtainViewModel(viewModelClass: Class<T>): T {
val todoRepository = (this.application as TodoApplication).todoRepository
return ViewModelProvider(this as ViewModelStoreOwner, ViewModelProvider.Factory.get(todoRepository,
viewModelClass
))
}

并且得到以下错误类型不匹配:推断的类型是ViewModelProvider,但T应该是

如果您查看文档,ViewModelProvider构造函数需要两个参数。第二个是CCD_ 2。用ViewModelProvider.Factory的实例替换ViewModelFactory(todoRepository)

fun <T : ViewModel> AppCompatActivity.obtainViewModel(viewModelClass: Class<T>): T {
return ViewModelProvider(this).get(viewModelClass)
}

最新更新