Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Kotlin:Init函数和变量初始化_Android_Kotlin - Fatal编程技术网

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()
}