相关疑难解决方法(0)

Kotlin和Dagger:我可以将@Inject用于对象仍然可以为空/可选吗?

由于某些设备上发生的运行时错误,我需要一些可以使我的类可为空/可选的东西.

这可能吗?

class MyFragment extends Fragment {
    @Inject
    var presenter: MyPresenter? = null
// Other codes here...
}
Run Code Online (Sandbox Code Playgroud)

我想使用这个presenter选项,因为一些旧的Android设备特别抛出这个错误(这是在我删除lazyinit之前).

码:

class MyFragment extends Fragment {
    @Inject
    lazyinit var presenter: MyPresenter? = null
// Other codes here...

     override fun onDestroy() {
        super.onDestroy()
        presenter.somecode()
    }
}
Run Code Online (Sandbox Code Playgroud)

错误:

Fatal Exception: java.lang.RuntimeException: Unable to destroy activity {com.sample.MyActivity}: c.r: lateinit property presenter has not been initialized
       at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3497)
       at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3515)
       at android.app.ActivityThread.access$1400(ActivityThread.java:135)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1249)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:136)
       at android.app.ActivityThread.main(ActivityThread.java:5017)
       at …
Run Code Online (Sandbox Code Playgroud)

kotlin dagger-2

9
推荐指数
2
解决办法
1827
查看次数

标签 统计

dagger-2 ×1

kotlin ×1