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