1

在 android studio 3.0 中,当我们为 kotlin 创建一个新项目时,会在 app build gradle 文件中自动添加两个插件,如下所示:

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

为什么我们需要在android studio中应用android-extensions插件和kotlin-android插件?这背后是否有任何区别或任何原因。

4

4 回答 4

0

kotlin-android用于 kotlin 支持并kotlin-android-extensions用于替换 android.by 中 java 的 findViewById 概念。通过kotlin-android-extensions 在您的项目中使用,您可以通过您在 .xml 文件中提到的 ID 直接访问,例如:android:id="@+id/tvNextAbout " 您可以在活动示例中使用它:

tvNextAbout.setOnClickLisnet{}
于 2018-05-24T14:27:49.883 回答
0

这背后有什么区别或任何原因吗

是,有一点不同。

kotlin-android-extensions插件不是插件的一部分kotlin-android。添加扩展插件(由 Android Studio 为您显式或自动添加)的原因之一是无需处理该findViewById功能,因为它可以帮助您无缝恢复视图。

在内部,编译器会创建一个小的隐藏缓存函数,它会调用findViewById每个视图,下次使用同一个视图时,它会从缓存中获取它,而不是findViewById再次调用。

因此,您添加kotlin-android了设置 Kotlin for Android Studio 和kotlin-android-extensions以消除调用findViewById.

干杯和快乐的编码!

于 2017-08-27T18:22:27.793 回答
0

每个 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

于 2017-07-20T14:43:55.757 回答
-2
  • kotlin-android-plugin 允许您在 Android Studio 上使用 kotlin;
  • kotlin-android-extensions 提供了一套 if 工具来简化 android 开发。

https://kotlinlang.org/docs/tutorials/android-plugin.html https://kotlinlang.org/docs/tutorials/kotlin-android.html

于 2018-02-07T19:57:42.100 回答