Как использовать Kodein с Conductor в Android? - PullRequest
0 голосов
/ 10 октября 2019

Я хочу использовать в своем приложении и Conductor, и Kodein. Проблема состоит в том, что и контекст приложения, и действие являются нулевыми в настройке контроллера, и я не могу получить доступ к экземпляру Kodein.

class SetupNavigationController: Controller(), KodeinAware {
    override val kodein: Kodein by closestKodein(applicationContext!!)
    //    val kodein = (activity as MainActivity).kodein
    val someInstance: SomeClass by kodein.instance()
}

1 Ответ

0 голосов
/ 10 октября 2019

Kodein по умолчанию ленив, особенно потому, что applicationContext имеет значение null во время создания экземпляра класса и устанавливается позднее системой.

Вам нужно использовать ленивый синтаксис, так что applicationContext будет доступен толькопри необходимости:

class SetupNavigationController: Controller(), KodeinAware {
    override val kodein: Kodein by kodein { applicationContext!! }
    val someInstance: SomeClass by kodein.instance()
}
...