gpt4 book ai didi

android - lateinit 属性响应尚未初始化

转载 作者:行者123 更新时间:2023-12-04 07:15:52 27 4
gpt4 key购买 nike

我在 init block 中初始化响应但是抛出异常:/为什么?

lateinit var response: MutableLiveData<List<AccessListItem?>>


init {
response.value.apply { emptyList<AccessListItem>() }
}

异常(exception):

kotlin.UninitializedPropertyAccessException: lateinit property response has not been initialized

最佳答案

您没有在 init block 中初始化 response(您需要 response = something)。您实际上甚至没有初始化 response.value。您实际上正在做的是访问 response.value,这需要访问response,但失败了,因为response 是从未初始化。

您需要在 init block 中或在属性声明处初始化 response。最有可能使用 MutableLiveData() 构造函数,或任何其他获取实时数据的方法。

例如,您可以这样初始化属性:

val response = MutableLiveData<List<AccessListItem?>>()

请注意,您不再需要 lateinitvar,只需一个简单的 val,因为您不需要更改 response(实时数据)本身,但只有它的值。

为了在其中添加一些值,您需要设置response.value。您可以使用 response.value = emptyList() 来做到这一点。现在这段代码可以像您尝试的那样放在 init block 中:

val response = MutableLiveData<List<AccessListItem?>>()

init {
response.value = emptyList()
}

但是你也可以使用作用域函数apply在初始化response属性时直接执行这个操作:

val response = MutableLiveData<List<AccessListItem?>>().apply {
value = emptyList()
}

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

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