lateinit property xxx has not be
2020-07-24 本文已影响0人
钢镚koala
搜索各方资料。共有以下几种办法解决。
1、一个是判断初始化状态;
if(::strs.isInitialized)
{}
class Foo {
lateinit var lateInitVar: String
fun checkInit() {
if(this::lateInitVar.isInitialized){ //重要,this::前缀是必须的。
//如果已经初始化了,返回true }
}
}
2、第二种就是防止重新创建视图,到时初始化失败的做法。
/**
* 避免重新创建后导致未初始化问题
*/
@SuppressLint("MissingSuperCall")
override fun onSaveInstanceState(outState: Bundle?) {
}
3、替换lateinit字段
val person: Person by lazy { Person(this) }
//1.尝试 by lazy
val itemFragments = ArrayList<BaseFragment>()
//2.直接在类变量种初始化对象
//3.让你的逻辑判断lateinit 有没有初始化
internal var context: Context
//4.也可以通过 internal var 来定义类变量
var student:Student?=null
//5.初始化为空的变量,使用?.run{} let,apply,with