Kotlin 1.0.2 База данных номеров - PullRequest
0 голосов
/ 11 марта 2019

Я использую 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)
}

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Вы объявили определение для Context объекта в других модулях?Потому что этот метод нужен вашей базе данных, и вы вызываете get() для его разрешения.Если нет, просто измените

single { UserDatabase.getInstance(get()) }

на

single { UserDatabase.getInstance(androidContext()) }

0 голосов
/ 13 марта 2019

Я попробовал ваш код в тестовом проекте с примерами сущностей, и это сработало. Поскольку вы не опубликовали фактическое описание ошибки, выполните / убедитесь в следующих шагах и повторите попытку.

Добавьте следующие зависимости к 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.

...