Kotlin Android- 如何实现CheckBox.OnCheckedChangeListener?

44

我是 Kotlin 的新手。我创建了一个 fragment,并实现了 View.OnClickListenerCheckBox.OnCheckedChangeListenerView.OnClickListener 可以正常工作,但是对于 CheckBox.OnCheckedChangeListener,它显示 “Unresolved reference”。

以下是代码:

class LoginFragment : Fragment(), View.OnClickListener, CheckBox.OnCheckedChangeListener {

    override fun onClick(view: View?) {

    }


}

我该如何实现CheckBox.OnCheckedChangeListener接口呢?提前感谢。


请发布显示错误的代码。 - zsmb13
展示你的代码... - ρяσѕρєя K
5个回答

72

使用CheckBox.OnCheckedChangeListener,例如:

checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
  Toast.makeText(this,isChecked.toString(),Toast.LENGTH_SHORT).show()
}

其中checkBox是CheckBox的ID。


17
var checkBox:CheckBox = CheckBox(context)
checkBox.setOnCheckedChangeListener { buttonView, isChecked ->  
        if (isChecked) {
                //Do Whatever you want in isChecked
        }
}

10

Kotlin 中,你可以像这样使用 CheckBox.OnCheckedChangeListener

checkBox.setOnCheckedChangeListener { _, isChecked ->
   Toast.makeText(this,isChecked.toString(),Toast.LENGTH_SHORT).show()
}

4
CheckBox.OnClickListener不是一个已存在的接口。 CheckBox 继承自 View,因此要为 CheckBox 分配一个监听器,可以使用其 setOnClickListener 方法,该方法需要一个 View.OnClickListener 的实例。

如果您想在同一个 Fragment 中处理这两个事件,您必须使用 onClick 方法的参数区分 CheckBox 和其他 View

或者,您可以将 lambda 表达式用作您的 View 的监听器,而不是使用 Fragment 本身。

checkbox.setOnClickListener { view ->
    // handle clicks here
}

如其他答案所述,使用setOnCheckedChangeListener也是CheckBox的一种选项。


完美!我刚刚使用了如下代码:myCheckBox.setOnClickListener { view -> if (view is CheckBox) { if (view.isChecked) onCheck(true) else onCheck(false) } } - Rafael Baptista

1
使用CheckBox.OnCheckedChangeListener在Kotlin Android中的最简单方法如下:
checkbox.setOnClickListener { view ->
if ((view as CheckBox).isChecked) {
    // Perform action when the checkbox is checked
} else {
    // Perform action when the checkbox is not checked
}
}

希望这个代码片段的例子能够更容易理解CheckBox.OnCheckedChangeListener的使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接