Как мне предоставить экземпляр приложения в модуле - PullRequest
0 голосов
/ 09 июля 2019

Я не могу создать свое приложение из-за следующей ошибки.

@Component.Builder отсутствует установщики для необходимых модулей или компонентов

I'mиспользуя

implementation "androidx.room:room-runtime:2.1.0"

kapt "androidx.room:room-compiler:2.1.0"

Мои приложения RoomModul выглядит следующим образом:

@Module
class RoomModule(application: Application) {

@Singleton
private var logDatabase : LogDatabase =
    Room.databaseBuilder(application, LogDatabase::class.java, "log-db").build()

@Singleton
@Provides
fun providesLogDatabase() : LogDatabase {
    return logDatabase
}

@Singleton
@Provides
fun providesLogDao() : LogDao {
    return logDatabase.getLogDao()
}

@Singleton
@Provides
fun providesLogRepository(logDao: LogDao) : LogRepository {
    return LogDataSource(logDao)
}
}

А мой AppComponent выглядит следующим образом:

@Singleton
@Component(
modules = [
    AndroidInjectionModule::class,
    AppModule::class,
    MainActivityModule::class,
    RoomModule::class
])
interface AppComponent {
@Component.Builder
interface Builder {
    @BindsInstance
    fun application(application: Application): Builder

    fun build(): AppComponent
}

fun inject(logApplication: LogApplication)
}

Так что моему RoomModule требуется приложение для предоставления базы данных комнат.Но я продолжаю получать сообщение об ошибке.

Я думал, что @BindsInstance должен предоставлять экземпляр приложения моим модулям.Я также попытался удалить конструктор из моего RoomModule, но безуспешно.Пожалуйста, дайте мне знать, если я могу предоставить больше информации.

1 Ответ

0 голосов
/ 09 июля 2019
Try to use this
@Module
class RoomModule()
{
 @Singleton
 @Provides
 private var logDatabase(application: Application) : LogDatabase =
 Room.databaseBuilder(application, LogDatabase::class.java, "log-db").build()
----
}

And Remove this line ---> fun inject(logApplication: LogApplication)
from AppComponent
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...