问题标签 [kotlin-lateinit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
508 浏览

kotlin - 初始化属性y后如何在init块中执行代码

在初始化属性 y 之后,我想在我的类 init 块中调用一些代码。我已经尝试过this::y.isInitialized......,但这里的问题是在创建类时,属性没有初始化(它在运行时得到)。

示例类

塞纳里奥

这甚至可能吗?或者我应该在确保y初始化之后使用函数调用来更改 init 块?

0 投票
1 回答
1461 浏览

android - “kotlin.UninitializedPropertyAccessException: lateinit property madapter has not been initialized at...”设置 RecyclerView Adapter 时

抛线错误:

代码:

来自 logcat 的错误:

0 投票
1 回答
1282 浏览

android - lateinit 属性实例尚未初始化,正在制作应用程序时

我是一名新开发人员(如果我可以称自己为一个)正在制作警报应用程序。我想我制作了应用程序的其他部分,但无论我多么努力,我都不知道如何修复错误。要访问AlarmManager.kt中的实例,我不禁要创建实例伴随对象。但我想这会导致问题......请有人告诉我如何解决这个错误吗?提前致谢!

kotlin.UninitializedPropertyAccessException:lateinit 属性实例尚未初始化

↓ SampleApplication.kt

↓AlarmManager.kt

0 投票
1 回答
69 浏览

kotlin - 检查一个类的所有lateinit成员是否都已初始化

我想创建一个扩展方法,帮助我验证lateinit一个类的所有属性是否已在给定时间点初始化。到目前为止,我提出了以下几点:

但它相当难看,因为我必须明确调用该属性,这可能非常昂贵。

有没有办法isInitialized代替使用?我不知道如何绑定myKProperty1this获得 aKProperty0所以我访问它(如果可能的话)。

0 投票
2 回答
245 浏览

kotlin - “lateinit var 覆盖 lateinit var”

假设我有这样的设置:

IntelliJ 给了我一个非常有用的警告softAssertionsin BarTest

lateinit var 覆盖 lateinit var

耶耶耶耶 ..?继续,你的目的是什么?

我最终意识到我lateinit var的 inFooTest真的应该是一个abstract val, 相反 - 它摆脱了警告 - 但即便如此,我还是想知道......是否有关于lateinit var覆盖 alateinit var我应该知道但不知道并且 IntelliJ 想要告诉我,但不告诉我?

0 投票
1 回答
529 浏览

kotlin - Lateinit 属性 viewBinding 尚未初始化

我正在成功使用 viewBinding 并且以前从未遇到过这个问题。该属性在 onViewCreated 中初始化,如下所示:

然后我有一个打开相机的按钮,就像这样(也在 onViewCreated 中):

我的主要片段实现了在相机片段中声明的接口函数。这是为了知道用户是选择了图像还是在没有选择图像的情况下关闭了相机。像这样:

我的 viewBinding 属性怎么不能在这里初始化?显然是在导航到相机片段时。这是某种生命周期问题吗?导航到相机时是否取消初始化?

感谢任何指示。

0 投票
2 回答
99 浏览

android - 我们什么时候应该为一个对象选择lateinit?将绑定设置为非可选和延迟初始化是不好的做法吗?

我被声明为片段中的绑定对象,lateinit var binding: EditInsuranceDialogBinding但一位同事说“这是一种不好的做法,绑定对象应该是可选的。”

所以在声明中将改为这样:var binding: EditInsuranceDialogBinding? = null,在中初始化onCreateContentViewnullonDestroyView

我想知道什么是最好的选择绑定类型(可选或不)?并且lateinit在编译器和内存中花费很多吗?什么时候不应该选择lateinit 什么时候应该使用它?

0 投票
0 回答
43 浏览

android - 如何在 App Context 上强制初始化?

为了在任何地方使用应用程序上下文,我使用以下代码:

但有时它会引发错误。

正如这里所建议的,设置延迟(在调用 App.instance 之前)会有所帮助,但我想调用一些东西而不必等待设置的延迟。除此之外,isInstanceInitialzed 方法总是返回 false..

我可以在 MainActivity 的 onCreate 方法的开头写什么,以确保实例变量已初始化?

0 投票
1 回答
1010 浏览

android - 应用程序崩溃,因为迟到的 init 属性尚未在 android studio 中初始化

我有一个按钮,当我单击它时,它应该显示警报对话框,但是当我单击该按钮时应用程序崩溃我知道代码流程是这样的,但我不知道我在哪里做错了

0 投票
5 回答
562 浏览

android - 如何确保在需要之前初始化 lateinit 变量?

我有一个大部分时间都会启动的应用程序,但每 7 次左右启动它就会崩溃并出现错误:

kotlin.UninitializedPropertyAccessException:lateinit 属性 weekdayList 尚未初始化

这是一个明显的错误,我只是不确定如何确保在我的应用程序上下文中足够早地初始化变量。

我尝试过的事情

  • 我尝试移动变量,使“内部”和“外部”变量,一个内部变量onCreate和一个下划线变量作为类变量。

  • 更改视图模型,使其等到对数据库的调用完成(我无法完成这项工作,但主要是因为我不知道该怎么做)。

我认为问题出在onCreate函数中,并且工作日观察没有比weekdayList调用任务观察(需要变量的地方)更快地设置变量的值?


编辑 1

我引用了这个,但我最终遇到了类似的错误

java.lang.IndexOutOfBoundsException:空列表不包含索引 1 处的元素。


编辑 2

我现在了解lateinit变量和可空对象是如何工作的,我想尝试更好地澄清这一点。

在我点击for之前,weekdayList 需要将变量初始化为正确的列表,否则应用程序将崩溃。observetaskList

我尝试将变量设置为可为空,并最终得到:

  • 当程序为空时跳过部分程序(不是一个选项)
  • 因空指针异常而崩溃(如果设置为不可为空)
  • 没有任务被分配到任何一天,这意味着没有更新回收站视图,从而使应用程序看起来不包含任何任务。
  • 工作日按钮不起作用,因为没有weekdayList可供他们比较以启动下一个活动

我的问题不在于弄清楚它是否null存在,它试图保证它不会是null.

对困惑感到抱歉


主要活动

视图模型