通常,我们不会在kotlin中使用findViewById(R.id.listView),因为Android Studio会自动为我们完成操作(我们不需要查找视图)。 但是this的示例表明,我们需要您(在此代码行中):
matplotlib
为什么在此示例中使用此行?如何不使用它?
答案 0 :(得分:2)
如果您使用的是Kotlin的findViewById
,则永远不需要强制转换(从API级别26开始)。您应该使用以下两种方式之一:
val myTV1 = findViewById<TextView>(R.id.myTextView)
val myTV2: TextView = findViewById(R.id.myTextView)
然后您可以通过以下变量访问其属性:
myTV1.text = "testing"
这是获取View引用并按原样在Kotlin中使用它们的一种完全有效的方法。
但是,如果您还在项目中启用了Kotlin Android Extensions(通过模块级别apply plugin: 'kotlin-android-extensions'
文件中的build.gradle
行),则还可以通过以下方式通过其ID引用视图它提供的合成属性,只需确保您具有正确的导入即可,例如:
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
myTextView.text = "testing"
}
}
请注意,Kotlin Android扩展程序是完全可选的,并且如果您确实使用它,findViewById
当然仍然可用,无论出于何种原因,您都想将这两种方法混合使用。
答案 1 :(得分:0)
通常,当需要布局文件中的视图时,可以导入以下内容:
kotlinx.android.synthetic.main.<layout filename>.<id of view>
如果需要布局文件中的所有视图,则可以使用:
kotlinx.android.synthetic.main.<layout filename>.*
答案 2 :(得分:0)
仅适用于 Kotlin
第 1 步: 在我们的代码中添加这个 Kotlin Android 扩展
Gradle 脚本 -> build.gradle(Module)
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
注意:现在您可以直接访问视图ID,而无需使用findViewbyId,以防遇到任何红线按alt+enter,或将其导入到KT 文件中。
import kotlinx.android.synthetic.main.activity_your_layout.*