美文网首页
lateinit property xxx has not be

lateinit property xxx has not be

作者: 钢镚koala | 来源:发表于2020-07-24 17:00 被阅读0次

搜索各方资料。共有以下几种办法解决。
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

相关文章

网友评论

      本文标题:lateinit property xxx has not be

      本文链接:https://www.haomeiwen.com/subject/ojfslktx.html