android - 更新生命周期版本后 View 模型工厂类不起作用

标签 android

我正在使用 def lifecycle_version = "2.3.1" ,implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") .
但我必须将版本更新为 def lifecycle_version = "2.4.0-alpha03"使用某些功能,但 ViewModelProvider.Factory我使用 def lifecycle_version = "2.4.0-alpha03" 后类(class)不起作用.

class ViewModelFactory(private val param:String,private val param2: String) : ViewModelProvider.Factory {
    override fun <T : ViewModel?> create(modelClass: Class<T>): T {
        return if (modelClass.isAssignableFrom(ReviewViewModel::class.java)) {
            ReviewViewModel(param,param2) as T
        }else if(modelClass.isAssignableFrom(FoodViewModel::class.java)){
            FoodViewModel(param,param2) as T
        else {
            throw IllegalArgumentException()
        }
    }
}
错误消息是
! Class 'ViewModelFactory' is not abstract and does not implement abstract member public abstract fun <T : ViewModel> create(modelClass: Class<T>): T defined in androidx.lifecycle.ViewModelProvider.Factory! 'create' overrides nothing谢谢..

最佳答案

你写过:

override fun <T : ViewModel?> create(modelClass: Class<T>): T {
但是错误消息的意思是create必须始终有一个非空 ViewModel类型。您需要更改方法签名以删除 ?这表明您的 <T : ViewModel?> 上的可空性:
override fun <T : ViewModel> create(modelClass: Class<T>): T {
这在 Lifecycle 2.4 release notes 中特别指出。 :

Source-breaking change: ViewModelProvider has been rewritten in Kotlin. ViewModelProvider.Factory.create method now longer allows nullable generic.

关于android - 更新生命周期版本后 View 模型工厂类不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69892377/

相关文章:

android - 推送后在 Github 上保护 API key

安卓 SQLite : How to update table

android - 你如何设置微调器文本颜色?

javascript - 播放 m4a 网络音频时基于 CrossWalk 的混合应用程序的奇怪行为

android - 单击事件在框架布局内不起作用

android - Exo 播放器 DASH 流媒体示例

android - Smack/openfire 如何让用户永久留在群聊室

javascript - 为 Android 构建时出现 nativescript-push-notification 错误

Android Listview 回收是带动画行的

Android 相机 android.hardware.Camera 已弃用