android studio 3.0中的Kotlin-android和kotlin-android-extensions之间的区别

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

apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' 

为什么我们需要在android studio中使用android-extensions插件和kotlin-android插件呢? 这背后有什么不同或有什么理由。

每个Android开发人员都知道findViewById()。 但是findViewById不再需要Kotlin。

这是怎么发生的? 这是因为Kotlin Android Extension。

如何使用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文件中的下面的插件和我们的activity类中的import语句。

 apply plugin: 'kotlin-android-extensions' import statement in Activity: import kotlinx.android.synthetic.main.activity_login.* 

由于这个插件和导入语句,我们不需要在我们的活动中创建View对象。 我们可以直接引用布局文件中定义的名称。

如果布局文件名是activity_main.xml,我们应该

 import kotlinx.android.synthetic.main.activity_main.*. 

详情请看这里: http : //kotlin-andro.blogspot.in/2017/07/kotlin-android-extensions.html

这背后有什么不同或有什么理由

是,有一点不同。

kotlin-android-extensions插件不是 kotlin-android插件的一部分。 您添加扩展程序插件(无论是显式还是自动为Android Studio添加的)的原因之一就是不必处理findViewById函数,因为它可以帮助您无缝地恢复视图。

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

所以,你添加kotlin-android来为Android Studio和kotlin-android-extensions设置Kotlin, 以免调用findViewById

干杯和快乐的编码!

  • kotlin-android-plugin是什么让你在Android Studio上使用kotlin;
  • kotlin-android-extensions提供了一套如果使得android开发更容易的工具。

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