【问题标题】:id names are red in Android Studio (Kotlin) [duplicate]Android Studio(Kotlin)中的ID名称为红色[重复]
【发布时间】:2021-03-24 18:31:57
【问题描述】:

我使用带有 imageView 和按钮的 Android Studio 制作了一个非常基本的掷骰子应用程序(在 Kotlin 中)。 imageView 的 id 是“imageView”,按钮的 id 是“button”。但是在 MainActivity.kt 文件中,id 名称是红色的,当我将鼠标悬停在它们上面时,它会显示“未解析的引用:imageView(或按钮)” 为什么会发生这种情况,我该如何解决?

activity_main.xml 和 MainActivity.kt 文件中的 id 名称相同:

【问题讨论】:

  • 你导入布局了吗?
  • 你能提供我的导入部分以及你的 app 的 build.gradle 吗?
  • 你在使用 Kotlin 安卓扩展插件吗?
  • 您使用的是哪个版本的 kotlin?
  • 我强烈推荐使用 ViewBind 而不是 Kotlin 扩展。它在 kotlin 版本 1.4.20 中已弃用

标签: android android-studio kotlin


【解决方案1】:

您的活动需要知道这些名称所指的内容,平台不会自动链接来自 XML 布局文件的视图 inflated。从历史上看,这是在 Android 中通过调用 findViewById() 方法完成的,如下所示:

lateinit var myTextView

override fun onCreate(savedInstanceBundle: Bundle?) {
    super.onCreate(savedInstanceBundle)
    // The layout file is "inflated" automatically here
    setContentView(R.layout.layout_name)

    // Then we can assign a reference to views by ID:
    myTextView = findViewById<TextView>(R.id.text_view_name)
}

从那时起,捷径出现了:ButterknifeKotlin Synthetics,或当前公认的标准Jetpack View Binding。如果您只需要获取一些视图,请快速致电findViewByid(),但是当您使用 Android 时,值得花时间启用视图绑定以减少此样板代码。

【讨论】:

    【解决方案2】:

    只需使用无效缓存重新启动/在您看到此图像时重新启动,并在此清理之后重新构建您的项目

    【讨论】:

    • 错了,这不能解决问题,这不是IDE错误,找不到视图
    • 只要使用viewBinding就可以解决这个问题
    【解决方案3】:

    你必须使用 kotlin 扩展。 在您的app gradle.build 添加应用插件:'kotlin-android-extensions' 在您的课程中添加 import for import kotlinx.android.synthetic.main.&lt;layout&gt;.* 您的布局的文件名在哪里。

    【讨论】:

    • kotlin 合成器已弃用
    猜你喜欢
    • 2020-10-03
    • 2021-08-22
    • 2016-11-01
    • 1970-01-01
    • 2017-05-18
    • 2016-12-25
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    相关资源
    最近更新 更多