无法在 Kotlin 中使用 Room 数据库创建类 ViewModel 的实例

问题描述 投票:0回答:1

我需要创建一个应用程序来使用数据库。但是在创建模型时出现错误:无法创建类 com.example.carexpenses.viewmodels.CarViewModel 的实例

错误由使用应用程序的行给出。如何解决这个问题?

我的ViewModel类

class CarViewModel(application: Application) : AndroidViewModel(application) {

    private val carDao : CarDao
    private val allCars: LiveData<List<Car>>
    
    init{
        val db = MainDB.getDatabase(application)
        carDao = db.carDao()
        allCars = carDao.getAllCars()
    }
    
    fun getAllCars(): LiveData<List<Car>> {
        return allCars
    }
    
    fun insertCar(car: Car) {
        viewModelScope.launch(Dispatchers.IO) {
            carDao.insertCar(car)
        }
    }

}

我的数据库类:

@Database(entities = \[Car::class\], version = 1)
abstract class MainDB: RoomDatabase() {

    abstract fun carDao(): CarDao
    companion object {
        @Volatile
        private var INSTANCE: MainDB? = null
    
        fun getDatabase(context: Context): MainDB {
            return INSTANCE ?: synchronized(this) {
                val instance = Room.databaseBuilder(
                    context.applicationContext,
                    MainDB::class.java,
                    "main.db"
                ).build()
                INSTANCE = instance
                instance
            }
        }
    }

}

在Fragment中创建ViewModel:

carViewModel = ViewModelProvider(this)[CarViewModel::class.java]

我找不到解决方案,一切都可以在不使用数据库的情况下工作,当连接时,一切都停止工作

android kotlin android-room viewmodel
1个回答
0
投票

问题不是因为 ViewModel。由于实现,一切都不起作用:实现'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'

删除后错误消失了,万岁

© www.soinside.com 2019 - 2024. All rights reserved.