在 android studio 3.0 中,当我们为 kotlin 创建一个新项目时,会在 app build gradle 文件中自动添加两个插件,如下所示:
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
为什么我们需要在android studio中应用android-extensions插件和kotlin-android插件?这背后是否有任何区别或任何原因。
在 android studio 3.0 中,当我们为 kotlin 创建一个新项目时,会在 app build gradle 文件中自动添加两个插件,如下所示:
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
为什么我们需要在android studio中应用android-extensions插件和kotlin-android插件?这背后是否有任何区别或任何原因。
kotlin-android
用于 kotlin 支持并kotlin-android-extensions
用于替换 android.by 中 java 的 findViewById 概念。通过kotlin-android-extensions
在您的项目中使用,您可以通过您在 .xml 文件中提到的 ID 直接访问,例如:android:id="@+id/tvNextAbout " 您可以在活动示例中使用它:
tvNextAbout.setOnClickLisnet{}
这背后有什么区别或任何原因吗
是,有一点不同。
该kotlin-android-extensions
插件不是插件的一部分kotlin-android
。添加扩展插件(由 Android Studio 为您显式或自动添加)的原因之一是无需处理该findViewById
功能,因为它可以帮助您无缝恢复视图。
在内部,编译器会创建一个小的隐藏缓存函数,它会调用findViewById
每个视图,下次使用同一个视图时,它会从缓存中获取它,而不是findViewById
再次调用。
因此,您添加kotlin-android
了设置 Kotlin for Android Studio 和kotlin-android-extensions以消除调用findViewById
.
干杯和快乐的编码!
每个 Android 开发人员都知道 findViewById()。但是 Kotlin 不再需要 findViewById 了。
这是怎么发生的?这是因为 Kotlin Android 扩展。
如何使用 Kotlin 访问 TextView:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
textView.setText("Hello World"); // No need(findViewById) to create a reference variable explicitly
}
但是这一切是如何工作的?这就是“Kotlin Android 扩展”的魔力。
您可能已经注意到 Gradle 文件中的以下插件和我们的活动类中的导入语句。
apply plugin: 'kotlin-android-extensions'
import statement in Activity:
import kotlinx.android.synthetic.main.activity_login.*
由于这个插件和 import 语句,我们不需要在我们的活动中明确地创建 View 对象。我们可以直接从布局文件中定义的名称引用 View。
如果布局文件名是activity_main.xml,我们应该
import kotlinx.android.synthetic.main.activity_main.*.
有关详细信息,请参见此处:http: //kotlin-andro.blogspot.in/2017/07/kotlin-android-extensions.html
https://kotlinlang.org/docs/tutorials/android-plugin.html https://kotlinlang.org/docs/tutorials/kotlin-android.html