Android studio 科特林:检查单击了哪个按钮
我有3个按钮调用相同的方法,在这个方法中,我希望能够检索按钮的文本或ID 有这样的东西吗Android studio 科特林:检查单击了哪个按钮,android-studio,kotlin,button,Android Studio,Kotlin,Button,我有3个按钮调用相同的方法,在这个方法中,我希望能够检索按钮的文本或ID 有这样的东西吗 fun getButtonID(view: View) { var buttonTxt = this.getText Log.d("DEV", "${buttonTxt}") } onClickListeners将单击的视图传递给它们的回调,这样您就可以执行此类操作来识别它: fun handleButtonClick(
fun getButtonID(view: View) {
var buttonTxt = this.getText
Log.d("DEV", "${buttonTxt}")
}
onClickListener
s将单击的视图
传递给它们的回调,这样您就可以执行此类操作来识别它:
fun handleButtonClick(view: View) {
with (view as Button) {
Log.d("TAG", "$text, $id")
}
}
然后把你的钮扣像
button1.setOnClickListener { view ->
handleButtonClick(view)
}
这是将视图
强制转换为按钮
的一种方法-通过在handler方法中执行,您只能在一个位置执行。由于您的onClick
lambda只调用方法并直接传入参数(无需强制转换),这意味着您可以将其简化为函数引用,因为您的函数采用lambda使用的参数相同(即仅为视图
):
当我们这么做的时候
listOf(button1, button2, button3).forEach {
it.setOnClickListener(::handleButtonClick)
}
onClickListener
s将单击的视图
传递给它们的回调,这样您就可以执行此类操作来识别它:
fun handleButtonClick(view: View) {
with (view as Button) {
Log.d("TAG", "$text, $id")
}
}
然后把你的钮扣像
button1.setOnClickListener { view ->
handleButtonClick(view)
}
这是将视图
强制转换为按钮
的一种方法-通过在handler方法中执行,您只能在一个位置执行。由于您的onClick
lambda只调用方法并直接传入参数(无需强制转换),这意味着您可以将其简化为函数引用,因为您的函数采用lambda使用的参数相同(即仅为视图
):
当我们这么做的时候
listOf(button1, button2, button3).forEach {
it.setOnClickListener(::handleButtonClick)
}
顺便说一下,您可以使用按钮XML中的onClick attriubte调用
handleButtonClick()
方法(这样您就不必设置单击侦听器了)耶!您有几个选项-了解通用代码版本很好,但是它会弹出很多(与其他事件以及在对话框上设置按钮处理程序等)顺便说一句,您可以使用按钮XML中的onClick attriubte调用handleButtonClick()
方法(这样你就不必设置点击监听器了)是的!你有几个选项-虽然知道通用代码版本很好,但它会弹出很多(与其他事件一起,以及在对话框上设置按钮处理程序等事情)