При внедрении зависимостей с Kodein в Activity, Fragment или т.п., мы переопределяем инстанс kodein. Важно иметь ввиду, что умолчанию наследования объявленных на родительском уровне объектов не происходит.
Если вы хотите получить доступ к этим объектам, вы можете использовать метод extend
Пример
Предположим, у меня есть инстанс настроек, объявленный на уровне приложения
class App : Application(), KodeinAware {
override val kodein = Kodein {
import(androidXContextTranslators)
bind<ISettings>() with singleton { Settings(this@App) }
}
Далее в активити мы его можем получить следующим образом:
class MainActivity : Activity(), KodeinAware {
private val appKodein by kodein(App.instance)
override val kodein = Kodein {
// или так:
// extend(appApplication.appKodein(), allowOverride = true)
extend(appKodein)
// после строчки выше мы наследуем все от уровня App
//...
}
private val settings: ISettings by instance() // корректная инициализация зависимости
Комментариев нет
You can leave the first : )