Android Kotlin:Init函数和变量初始化
我正在为我的应用程序构建一个组件,我开始更频繁地使用Android Kotlin:Init函数和变量初始化,android,kotlin,Android,Kotlin,我正在为我的应用程序构建一个组件,我开始更频繁地使用init函数而不是构造函数,但现在奇怪的事情发生了。若我调用init函数内部的函数来初始化列表,它会在该列表上抛出NullPointerException。在特定类中初始化变量之前,是否执行init函数 在removeallview中引发异常 代码: init{ createViews() } private var viewList=mutableListOf() 私有视图(){ removeAllViews() list.forEach{a
init
函数而不是构造函数,但现在奇怪的事情发生了。若我调用init
函数内部的函数来初始化列表,它会在该列表上抛出NullPointerException
。在特定类中初始化变量之前,是否执行init
函数
在removeallview
中引发异常
代码:
init{
createViews()
}
private var viewList=mutableListOf()
私有视图(){
removeAllViews()
list.forEach{addItem(it)}
changeViewsState(真)
}
私人娱乐removeAllViews(){
parent.removeAllViews()
viewList.clear()
}
来自本节的官方文件:
在实例初始化期间,将执行初始化程序块
与它们在类主体中出现的顺序相同,与
属性初始值设定项
因此,您应该将变量声明放在init
之前:
private var viewList = mutableListOf<ViewGroup>()
init {
createViews()
}
private fun createViews(){
removeAllViews()
list.forEach { addItem(it) }
changeViewsState(true)
}
private fun removeAllViews(){
parent.removeAllViews()
viewList.clear()
}
private var viewList=mutableListOf()
初始化{
createViews()
}
私有视图(){
removeAllViews()
list.forEach{addItem(it)}
changeViewsState(真)
}
私人娱乐removeAllViews(){
parent.removeAllViews()
viewList.clear()
}
这是否回答了您的问题?
private var viewList = mutableListOf<ViewGroup>()
init {
createViews()
}
private fun createViews(){
removeAllViews()
list.forEach { addItem(it) }
changeViewsState(true)
}
private fun removeAllViews(){
parent.removeAllViews()
viewList.clear()
}