无法在Kotlin中使用Room Database创建类ViewModel的示例

pgccezyw  于 7个月前  发布在  Kotlin
关注(0)|答案(1)|浏览(77)

我需要创建一个应用程序来处理数据库。但是当创建模型时,我得到一个错误:Cannot create an instance of class com.example.carexpenses.viewmodels.CarViewModel
错误是由应用程序使用的行给出的。如何修复这个错误?
我的ViewModelClass

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:
第一个月
我找不到解决方案,一切都在不使用数据库的情况下工作,当它连接时,一切都停止工作

i2byvkas

i2byvkas1#

问题并不在于ViewModel。一切都不起作用是因为实现:实现'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
删除后错误消失了,万岁

相关问题