我正在使用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)
}