问题描述
在 kotlin 中访问布局中的元素不需要做:
val k = findViewById(R......)
如果您的主要活动中有文本元素,则该元素应自动导入到连接到视图 FE 的 kotlin 文件中,在 kotlin 中,您可以直接在膨胀该视图和导入的文件中使用它的 id 来访问它应该像这样自动添加。
import kotlinx.android.synthetic.main.activity_main.view.*
但是在最近的几个项目中,我注意到这不会自动发生。
解决方法
您是对的,Kotlin 合成与视图绑定功能有很多相似之处。视图绑定的主要优点是使用错误的绑定类会有点困难(对于合成类,如果在多个布局中具有相同 ID 的视图,则很容易导入错误的合成类)。
我认为它已被弃用的原因有很多,即类型安全问题以及它不适用于 Java 的事实。
我写了一个关于视图绑定 here 的简短教程。
,经过一番挖掘,我发现 Kotlin Android 扩展现已被弃用。这是使用新方法的指南。 https://developer.android.com/topic/libraries/view-binding
另一种选择是在 app.gradle 文件中添加插件。
plugins {
...
id 'kotlin-android-extensions'
}
做完这件事后想到了两个问题:
- 他们为什么要删除导入?
- 他们演示的方法不是与导入整个视图完全相同吗?