При внедрении зависимостей с 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 : )