我有3个调用相同方法的按钮,在该方法中,我希望能够检索按钮的文本或ID。
有这样的东西吗?
fun getButtonID(view: View) {
var buttonTxt = this.getText
Log.d("DEV", "${buttonTxt}")
}
答案 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)
}