Je suis nouveau chez Kotlin. J'ai créé un fragment et implémenté View.OnClickListener
et CheckBox.OnCheckedChangeListener
. Le View.OnClickListener
fonctionne comme prévu mais affiche une référence non retirée pour CheckBox.OnCheckedChangeListener
.
Le code est ci-dessous
class LoginFragment : Fragment(), View.OnClickListener, CheckBox.OnCheckedChangeListener {
override fun onClick(view: View?) {
}
}
Comment puis-je implémenter CheckBox.OnCheckedChangeListener
..? Merci d'avance
Utilisez CheckBox.OnCheckedChangeListener comme:
checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
Toast.makeText(this,isChecked.toString(),Toast.LENGTH_SHORT).show()
}
où checkBox
est l'ID CheckBox.
var checkBox:CheckBox = CheckBox(context)
checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
if (isChecked) {
//Do Whatever you want in isChecked
}
}
CheckBox.OnClickListener
n'est pas une interface existante. CheckBox
hérite de View
, et ainsi pour affecter un écouteur à un CheckBox
, vous pouvez utiliser son - setOnClickListener
, qui prend une instance de View.OnClickListener
.
Si vous voulez gérer ces deux événements dans le même Fragment
, vous devrez différencier le CheckBox
et l'autre View
en utilisant le paramètre du onClick
méthode.
Vous pouvez également utiliser lambdas comme écouteurs pour votre View
s au lieu du Fragment
lui-même.
checkbox.setOnClickListener { view ->
// handle clicks here
}
Utiliser setOnCheckedChangeListener
comme mentionné dans les autres réponses est également une option avec CheckBox
.