在android程序中,我有以下代码:

clockCheckBox.setOnClickListener((object: View.OnClickListener {
    override fun onClick(view: View): Unit {
        if (clockCheckBox.isChecked())
            enableClocks()
        else
            disableClocks()
    }
}))

在 Android Studio 中,会出现一个工具提示,上面写着,



我试图这样做,但我得到的只是语法错误。你能告诉我正确的语法吗?我或许应该解释一下,这段代码在我的 Activity 的 onCreate 方法中,clockCheckBox 是一个定义为的局部变量
val clockCheckBox = findViewById(R.id.clockCheckBox) as CheckBox

最佳答案

上面的代码可以简化如下:

//                v--- parentheses is unnecessary
setOnClickListener {
    //                        v--- boolean property parenthess is unnecessary
    if (clockCheckBox.isChecked)
        enableClocks()
    else
        disableClocks()
}

您可以进一步查看 Java Interoperability

关于android - 将函数调用转换为 Lambda (SAM),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45199217/

10-09 12:53