编译器显示错误Kotlin:Variable';mAdapter';必须初始化

编译器显示错误Kotlin:Variable';mAdapter';必须初始化,kotlin,Kotlin,代码: 如何删除此警告。例如“?”或“!!”您可以这样重新组织代码 private val mAdapter: BaseAdapter = createAdapter(R.id.adapter) { listPosition: Int -> mAdapter.notifyItemChanged(listPosition) } 或者如果可能,将val更改为lateinit var private val mAdapter: BaseAdapter by lazy {

代码:


如何删除此警告。例如“?”或“!!”

您可以这样重新组织代码

private val mAdapter: BaseAdapter = createAdapter(R.id.adapter) { listPosition: Int ->
            mAdapter.notifyItemChanged(listPosition)
}
或者如果可能,将
val
更改为
lateinit var

private val mAdapter: BaseAdapter by lazy {
    createAdapter(R.id.adapter) { listPosition: Int ->
        mAdapter.notifyItemChanged(listPosition)
    }
}

您的变量未正确初始化。解决该问题的各种方法:

  • 初始化构造函数内的变量或正确的初始化 块(不是您声明的私有函数)

  • 在声明变量的同时初始化变量
  • 稍后初始化变量,并让Kotlin知道(这是 lateinit关键字)

这三个选项并不相同,根据您的代码,前两个选项可能比第三个选项更合适。

问题是“在声明变量的同时初始化变量”。
private lateinit var mAdapter: BaseAdapter

init {
    mAdapter = createAdapter(R.id.adapter) { listPosition: Int ->
        mAdapter.notifyItemChanged(listPosition)
    }
}