首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Dagger未初始化变量

Dagger未初始化变量
EN

Stack Overflow用户
提问于 2019-07-15 20:52:24
回答 1查看 70关注 0票数 0

在使用Kotlin启动Android项目中的Dagger时,我遇到了问题。

这个结构是下一个

Dagger包含在由客户端应用程序调用的Android模块中

MagicBox.kt

interface MagicBox {
   fun getDate(): Long?
}

MagicBoxImpl.kt

class MagicBoxImpl (): MagicBox{

    var date: Long = Date().time

    override fun getDate(): Long {
        return date
    }
}

MainModule.kt

@Module
class MainModule (private val app: Application) {

    @Provides
    @Singleton
    fun provideMagicBox(): MagicBox {
       return MagicBoxImpl()
    }
}

MainComponent.kt

@Singleton
@Component(modules = [MainModule::class, PresenterModule::class])
interface MainComponent{
    fun inject(target: Activity)
}

Application.kt

class Application: Application() {

    lateinit var mainComponent: MainComponent

    override fun onCreate() {
        super.onCreate()

        mainComponent = initDagger(this)
    }

    private fun initDagger(app: Application): MainComponent =
        DaggerMainComponent.builder()
            .mainModule(MainModule(app))
            .build()

}

MainActivity.kt

 @Inject
    lateinit var magicBox: MagicBox

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.main_layout)
        (application as ClientSdk).mainComponent.inject(this)

        tvDaggerTest = findViewById(R.id.tvDaggerTest)

        tvDaggerTest!!.text = magicBox.getDate().toString()
}

获取以下错误

原因: kotlin.UninitializedPropertyAccessException: lateinit属性magicBox尚未初始化

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57040168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档