【问题标题】:Kotlin: Check which button was clickedKotlin:检查单击了哪个按钮
【发布时间】:2020-08-24 23:59:15
【问题描述】:

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

有这样的吗?

 fun getButtonID(view: View) {

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

    }

【问题讨论】:

    标签: android-studio kotlin button


    【解决方案1】:

    onClickListeners 将点击的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)
    }
    

    【讨论】:

    • 顺便说一句,您可以使用按钮的 XML 中的 onClick 属性调用 handleButtonClick() 方法(这样您就不必设置点击监听器)
    • 是的!你有几个选择——虽然知道通用代码版本很好,但它会弹出很多(与其他事件,以及在Dialog 上设置按钮处理程序之类的事情)
    猜你喜欢
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2022-09-22
    • 1970-01-01
    • 2018-04-27
    相关资源
    最近更新 更多