Kis*_*nki 5 android kotlin rx-java retrofit reactivex
我有一个声明为的变量
private lateinit var apiDisposable: Disposable
Run Code Online (Sandbox Code Playgroud)
然后在onPause()
方法中,我正在做
override fun onPause() {
super.onPause()
if (!apiDisposable.isDisposed)
apiDisposable.dispose()
}
Run Code Online (Sandbox Code Playgroud)
但我明白了
kotlin.UninitializedPropertyAccessException:lateinit属性apiDisposable尚未初始化
任何人都可以告诉我如何检查此变量是否已初始化?有没有像这样的方法isInitialised()
任何帮助,将不胜感激
if(::apiDisposable.isInitialized)
Run Code Online (Sandbox Code Playgroud)
会解决你的问题.
一般来说,
::<lateinit variable name>.isInitialized
用于检查是否已初始化.
将您的属性声明为可空类型的简单属性:
private var apiDisposable: Disposable? = null
Run Code Online (Sandbox Code Playgroud)
使用安全呼叫表示法调用该方法:
override fun onPause() {
super.onPause()
apiDisposable?.dispose()
}
Run Code Online (Sandbox Code Playgroud)
lateinit
保留用于保证初始化的变量,如果不是这种情况 - 请勿使用它.
归档时间: |
|
查看次数: |
2813 次 |
最近记录: |