问题
I am new to Kotlin. I created a fragment and implemented View.OnClickListener
and CheckBox.OnCheckedChangeListener
. The View.OnClickListener
works as expected but it shows Unresloved reference for CheckBox.OnCheckedChangeListener
.
The code is below
class LoginFragment : Fragment(), View.OnClickListener, CheckBox.OnCheckedChangeListener {
override fun onClick(view: View?) {
}
}
How can I implement CheckBox.OnCheckedChangeListener
..?
Thanks in advance
回答1:
Use CheckBox.OnCheckedChangeListener like:
checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
Toast.makeText(this,isChecked.toString(),Toast.LENGTH_SHORT).show()
}
where checkBox
is CheckBox ID.
回答2:
CheckBox.OnClickListener
is not an existing interface. CheckBox inherits from View, and so to assign a listener to a CheckBox
, you can use its setOnClickListener method, which takes an instance of View.OnClickListener.
If you want to handle both of those events in the same Fragment
, you'll have to differentiate the CheckBox
and the other View
using the parameter of the onClick
method.
Alternatively, you could use lambdas as the listeners for your View
s instead of the Fragment
itself.
checkbox.setOnClickListener { view ->
// handle clicks here
}
Using setOnCheckedChangeListener as mentioned in the other answers is also an option with CheckBox
.
回答3:
var checkBox:CheckBox = CheckBox(context)
checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
if (isChecked) {
//Do Whatever you want in isChecked
}
}
回答4:
In Kotlin
, you can use CheckBox.OnCheckedChangeListener
like:-
checkBox.setOnCheckedChangeListener { _, isChecked ->
Toast.makeText(this,isChecked.toString(),Toast.LENGTH_SHORT).show()
}
来源:https://stackoverflow.com/questions/44150185/kotlin-android-how-implement-checkbox-oncheckedchangelistener