【问题标题】:How to use Kodein with Conductor in Android?如何在 Android 中将 Kodein 与 Conductor 一起使用?
【发布时间】:2019-10-10 04:19:49
【问题描述】:

我想在我的应用程序中同时使用 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()
}

【问题讨论】:

    标签: android kodein conductor


    【解决方案1】:

    Kodein 默认是惰性的,特别是因为 applicationContext 在类实例化时为空,稍后由系统设置。

    你需要使用惰性语法,这样applicationContext只会在需要的时候被访问:

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

    【讨论】:

    • 它不起作用,我仍然在应用程序上下文中得到空指针异常
    • 我发现问题出在哪里了,你得把kodein从kodein.instance()中去掉,就好像你用kodein访问一样,就不会偷懒了。
    • val someInstance: SomeClass by instance() 可以完成这项工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    相关资源
    最近更新 更多