由于某些设备上发生的运行时错误,我需要一些可以使我的类可为空/可选的东西.
这可能吗?
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)