gpt4 book ai didi

android - lateinit 属性尚未初始化我找不到初始化它的方法

转载 作者:行者123 更新时间:2023-11-29 15:34:39 26 4
gpt4 key购买 nike

我的 Kotlin Activity 中有 lateinit 属性,这是它的简化版本:

class CreateNewListOfQuestions : AppCompatActivity() {
lateinit var questionAnswerListOfObjects: ArrayList<QuestionAnswerObject>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_create_new_list_of_questions)

save.setOnClickListener {
questionAnswerListOfObjects.add(0, QuestionAnswerObject("question", "answer", 1))
}
}
}

主要问题是,当我生成移动应用程序并按下“保存”按钮时,应用程序停止工作。Logcat 显示此错误:“lateinit 属性 questionAnswerListOfObjects 尚未初始化”

我尝试了很多方法来初始化它,但这些方法对我没有帮助。我应该如何正确初始化它?我正在向 ArrayList 添加此类的许多对象:

class QuestionAnswerObject(var question: String, var answer: String, var probability: Int=100) {}

最佳答案

这取决于你想要什么。

例如,如果您需要的一切都使用 ArrayList<QuestionAnswerObject>你不需要lateinit完全:

var questionAnswerListOfObjects = ArrayList<QuestionAnswerObject>()

就够了

如果你想从Bundle得到或来自其他东西 - 您必须在 使用之前对其进行初始化。

基本上lateinit关键字仅用于表示“嘿,编译器,我有一个变量,它还没有被初始化,但我保证在我使用它之前它会被初始化,所以请将它标记为不可空字段”。

所以如果你真的想使用lateinit ,只需更早地初始化该属性,例如在 setContentView 之后添加

questionAnswerListOfObjects = ArrayList<QuestionAnswerObject>()

关于android - lateinit 属性尚未初始化我找不到初始化它的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53462603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com