Kotlin 合成导入不起作用,现在已弃用

问题描述

在 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'
}

做完这件事后想到了两个问题:

  1. 他们为什么要删除导入?
  2. 他们演示的方法不是与导入整个视图完全相同吗?