首页 > 解决方案 > 在 Kotlin 中为按钮设置 onClickListener 的更简单方法

问题描述

我有一个简单的按钮,我想为其设置一个 onclicklistener,我首先尝试了两种方法,findViewById它们都可以正常工作,但是我们可以button通过 if 直接从 kotlin 代码访问

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="232dp"
    android:text="Button"
    app:layout_constraintBottom_toTopOf="@+id/textView"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

科特林代码

这种方法效果很好

val btnClickMe = findViewById<Button>(R.id.button) 
btnClickMe.setOnClickListener {
   // do something
}

当我尝试通过 kotlin 代码中的 id 直接访问按钮时,它不起作用

 button.setOnClickListener {
           //do something
        }

错误:未解决的参考按钮

我在尝试一些不可能的事情吗?如果没有关于如何解决此问题的任何建议,请

谢谢R

标签: androidkotlin

解决方案


当我尝试通过 kotlin 代码中的 id 直接访问按钮时,它不起作用

可能吗 ?

对,但是...

您通过能够直接引用组件而不使用 findViewById 来尝试实现的目标称为合成导入,它允许您执行此操作。问题是这些现在已弃用,您应该使用 viewBinding 或仅使用标准 findViewById


相关资料:

https://developer.android.com/topic/libraries/view-binding/migration

未解决的参考 - 活动无法识别 android studio v4 中的合成导入


推荐阅读