当用户想要将切换位置更改为关闭时,我需要显示"您确定?"对话框。
我创建了一个检查函数,并为交换机分配了一个 setOnClickListener 函数
private fun checkSwitchStatus() {
if (!reminderSwitch.isChecked) {
reminderSwitch.isChecked = true
showCancelPopup()
} else {
reminderSwitch.isChecked = true
}
}
现在,开关不会在视觉上关闭,但 setOnCheckedChangeListener 函数仍在处理中,并且会发生一些操作。
override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {
if (!isChecked) {
showCancelPopup()
} else {
//*some action*
}
}
如何在开关更改其状态之前执行一些操作,并能够撤消状态更改?
您可以在 Switch上setClickable(false)
,然后在 Switch 的父级中侦听onClick
事件并以编程方式切换它。开关仍显示为已启用,但轻扫动画不会发生,其状态也不会更改。
由于您要重申用户的选择,因此请在onClick
中显示一个对话框,并让开关的状态取决于是否在对话框中点击了"是"。
// if yes was tapped on the Dialog
switchInternet.setChecked(true);
} else {
switchInternet.setChecked(false);
}