【问题标题】:Android Studio - MainActivity.kt doesn't recognise any element by IDAndroid Studio - MainActivity.kt 无法通过 ID 识别任何元素
【发布时间】:2021-02-16 13:31:45
【问题描述】:

我想,我正在努力解决非常普遍的问题。
我在 xml 文件中创建了一个按钮并用 ID 标记它。然后我想在 MainActivity.kt 中制作 onClickListener。但是当我输入按钮的 ID 时,它被标记为红色,看起来 Android Studio 无法识别它。我已经尝试清理和重建项目,但问题仍然存在。 Invalidate Caches/Restart 也没有帮助。
有来自 Android Studio 的屏幕。
View from XML

View from MainActivity.kt

感谢您的时间和帮助!

【问题讨论】:

  • 欢迎来到 SO!最好将代码直接作为文本而不是图像包含在您的问题中。

标签: android xml kotlin button


【解决方案1】:

您正在尝试做的是在 Android Studio 中使用 synthetic 视图绑定。据我在网上找到,they are not recommended anymore。请改用findViewById

val button = findViewById<Button>(R.id.SUB_button)
button.setOnClickListener { ... }

【讨论】:

  • 我的代码现在看起来像这样: class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val button = findViewById
  • 您正在查找 ID 为 SUB_button 的视图,并将其分配给名为 button 的变量。所以你需要在button上进行所有的方法调用(比如setText
【解决方案2】:

如果你想使用 Jetbrains 的合成视图绑定,你需要确保在你的模块 gradle 文件中添加 kotlin-android-extensions 插件。

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-android-extensions' }

Stefan 的上述正确答案表明它现在被认为已过时,但您仍然可以使用它。或者,就像他的回答一样,使用 findViewById。

或者,您可以使用视图绑定。为此,请确保在 gradle 文件的 Android 部分中有此条目:

buildFeatures{
        viewBinding = true
    }

使用方法请参考https://developer.android.com/topic/libraries/view-binding

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2020-06-20
    • 2020-01-22
    • 1970-01-01
    相关资源
    最近更新 更多