Kotlin无法通过ID访问TextView

zmeyuzjn  于 2023-02-13  发布在  Kotlin
关注(0)|答案(2)|浏览(194)

我刚开始学习使用Android Studio和Kotlin开发应用程序,但遇到了一个问题。在教程中,只需写入textView的ID,就可以从主XML文件中访问textView。但这对我不起作用。kotlin文件中无法识别ID,但是在视频中确实如此。我已经检查了ID是否正确,我已经按照视频中的每一步操作了。
示例:

myTextView.text = "text of myTextView"

提前感谢大家的帮助!

clj7thdc

clj7thdc1#

它需要kotlin-android-extensions,但已弃用。因此,最新的Android Studio可能不会将所需插件添加到您的build. gradle。您仍然可以通过手动将apply plugin: 'kotlin-android-extensions'添加到build.gradle来使用它(此外,您的kt文件中需要导入,但IDE会自动执行此操作),但不建议这样做。请改用视图绑定,如以下官方文档中所述:https://developer.android.com/topic/libraries/view-binding

ryevplcw

ryevplcw2#

如果您使用的是旧版本的Android Studio,然后可以使用

id 'kotlin-android-extensions

并导入Kotlin文件中的以下内容

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

那么您可以直接引用所有具有ID的视图。
但如果您使用的是最新版本的Android Studio,则(id 'kotlin-android-extensions)将无法工作,因为此方法已弃用。相反,我们可以做的是,在Gradle文件中添加以下代码。

plugins {id 'kotlin-android-extensions'}

以及

android {
...
buildFeatures {
    viewBinding true}
}

在Kotlin文件中执行以下操作(例如,对于每个XML文件,将生成一个绑定类-如果是activity_main. XML绑定类,则为ActivityMainBinding):

private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)}

以及如何从XML引用任何ID

// Reference to "name" TextView using synthetic properties.
name.text = viewModel.nameString

// Reference to "name" TextView using the binding class instance.
binding.name.text = viewModel.nameString

有关更多详细信息,请访问以下链接-https://developer.android.com/topic/libraries/view-binding/migration#groovy
https://developer.android.com/topic/libraries/view-binding#kotlin

相关问题