Kotlin:检查单击了哪个按钮

时间:2020-08-24 23:59:15

标签: android-studio kotlin button

我有3个调用相同方法的按钮,在该方法中,我希望能够检索按钮的文本或ID。

有这样的东西吗?

 fun getButtonID(view: View) {

        var buttonTxt = this.getText
        Log.d("DEV", "${buttonTxt}")

    }

1 个答案:

答案 0 :(得分:2)

onClickListener将点击的View传递给其回调,因此您可以执行以下操作来识别它:

fun handleButtonClick(view: View) {
    with (view as Button) {
        Log.d("TAG", "$text, $id")
    }
}

然后像设置按钮一样

button1.setOnClickListener { view ->
    handleButtonClick(view)
}

这是将View强制转换为Button的一种方法-通过在处理程序方法中进行操作,您只能在一个地方进行处理。并且由于您的onClick lambda仅调用方法并直接传入参数(也无需强制转换),因此,您可以将其简化为函数引用,因为您的函数采用与lambda相同的参数做到了(即只是View):

button1.setOnClickListener(::handleButtonClick)

当我们在这里

listOf(button1, button2, button3).forEach {
    it.setOnClickListener(::handleButtonClick)
}