繁体   English   中英

Kotlin 1.0.2房间数据库

[英]Kotlin 1.0.2 Room Database

我正在使用koin 1.0.2来管理依赖项注入,但是它不能与会议室数据库一起使用,返回时无法为单个对象创建定义。这是我的代码:

@Database(entities = [UserEntity::class], version = 1, exportSchema = false)
abstract class UserDatabase : RoomDatabase() {

    abstract fun userDao(): UserDao

    companion object {

        private var INSTANCE: UserDatabase? = null

        fun getInstance(context: Context): UserDatabase {
            if (INSTANCE == null) {

                INSTANCE = Room.databaseBuilder(
                        context,
                        UserDatabase::class.java,
                        "user_database")
                        .allowMainThreadQueries()
                        .build()
            }

            return INSTANCE!!
        }
    }
}


val DatabaseModule = module {

   single { UserDatabase.getInstance( get())}

}

class UserApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        startKoin(getModules())
    }
    private fun getModules() = listOf(DatabaseModule, RepositoryModule, ViewModule)
}

我已经在带有示例实体的测试项目中尝试了您的代码,并且该代码有效。 由于您尚未发布实际的错误说明,因此请执行/确保以下步骤,然后重试。

将以下依赖项添加到build.gradle

implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"

如果您正在使用RxJava作为空间,那么也请添加以下行

implementation "androidx.room:room-rxjava2:$room_version"

应用kotlin-kapt插件

apply plugin: 'kotlin-kapt'

清洁和建造。

如果仍然遇到问题,请考虑使用logcat堆栈跟踪来编辑问题。

您是否在其他模块中声明了Context对象的定义? 因为您的数据库方法需要这一方法,所以您正在调用get()来解决它。 如果没有,那就换

single { UserDatabase.getInstance(get()) }

single { UserDatabase.getInstance(androidContext()) }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM