gpt4 book ai didi

java - 使用 Kotlin 在 Android 中的 UI 组件上声明的最佳方式是什么?

转载 作者:行者123 更新时间:2023-11-29 02:35:53 24 4
gpt4 key购买 nike

我第一次尝试使用 Kotlin 构建 android 应用程序。

我想在 OnCreate 方法之外的一些按钮上声明,我只能在这个函数内用 findViewById 初始化它们。

我可以像在 java 中那样用简单干净的代码声明吗?

private Button btnProceed;

因为将它转换为 Kotlin 时它看起来像:

private var btnProceed: Button? = null

然后在初始化OnClick函数的时候需要加上!签名:

btnProceed!!.setOnClickListener

什么是正确且最干净的方法?

最佳答案

这是 lateinit 的一个很好的用例.标记属性 lateinit 允许您使其不可为 null,但不会在调用 Activity 的构造函数时为其分配值。它恰好适用于像 Activity 这样的类,当初始化发生在单独的初始化方法中时,晚于运行构造函数(在本例中为 onCreate)。

private lateinit var btnProceed: Button

如果属性在实际值分配给它之前被读取,它将在运行时抛出异常 - 通过使用 lateinit,您负责在访问它之前初始化它第一次。


否则,如果您希望编译器保证您的安全访问,您可以像转换器默认那样使 Button 可以为 null。而不是不安全的 !! operator但是,转换器经常使用,您应该使用 safe call operator您访问该属性的位置:

btnProceed?.setOnClickListener { ... }

如果 btnProceed 是一个非空值,这将进行常规调用,否则什么都不做。


最后一点,您可以查看 Kotlin Android Extensions ,如果它适用于您的项目,则无需为您的 View 创建属性。


上次编辑(现在):您还应该按照 other 中的描述使用 lazy answers .懒惰很酷。

关于java - 使用 Kotlin 在 Android 中的 UI 组件上声明的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47131821/

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