为什么 viewmodelfactory 在我的项目中无法识别?
Why viewmodelfactory not recognizing in my project?
我正在使用 ViewModel 开发一个 android 应用程序,但我在我的项目下面收到以下错误viewmodelfactory error。
低于我的 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
如果您查看 documentation ViewModelProvider
构造函数有两个参数。第二个是ViewModelProvider.Factory
。将 ViewModelFactory(todoRepository)
替换为 ViewModelProvider.Factory
的实例
fun <T : ViewModel> AppCompatActivity.obtainViewModel(viewModelClass: Class<T>): T {
return ViewModelProvider(this).get(viewModelClass)
}
我正在使用 ViewModel 开发一个 android 应用程序,但我在我的项目下面收到以下错误viewmodelfactory error。
低于我的 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
如果您查看 documentation ViewModelProvider
构造函数有两个参数。第二个是ViewModelProvider.Factory
。将 ViewModelFactory(todoRepository)
替换为 ViewModelProvider.Factory
fun <T : ViewModel> AppCompatActivity.obtainViewModel(viewModelClass: Class<T>): T {
return ViewModelProvider(this).get(viewModelClass)
}