Kotlin中如何获取触发函数的Button控件属性?
你当前代码里直接用this.button.name是错误的,因为this.button指向的是你代码里固定声明的某个按钮实例,没法区分到底是哪个按钮触发的函数。正确的做法是利用函数参数里的view对象——它就是实际被点击的那个控件,通过它来获取属性:
方法一:直接强转获取属性
把传入的view强转为Button类型,之后就能获取它的各种属性了:
fun test(view: android.view.View) { val clickedButton = view as Button // 获取按钮文本(如果你的"按钮名称"指的是显示文字) val buttonText = clickedButton.text.toString() // 也可以获取按钮ID、Tag等属性 val buttonId = clickedButton.id val buttonTag = clickedButton.tag Toast.makeText(this, "点击的按钮:$buttonText", Toast.LENGTH_LONG).show() }
方法二:安全判断后获取属性
如果担心控件类型不确定(比如有其他控件也会调用这个函数),可以先判断类型再操作:
fun test(view: android.view.View) { if (view is Button) { val buttonName = view.text.toString() Toast.makeText(this, buttonName, Toast.LENGTH_LONG).show() } }
核心逻辑就是:触发函数的控件就是参数里的view,所有属性都要从这个对象里获取,而不是直接引用代码里的固定按钮实例。
内容的提问来源于stack exchange,提问作者kraisler
相关产品推荐
相关产品推荐

