我需要显示“您确定吗?”对话框,当用户要将切换位置更改为关闭时。
我创建了一个检查函数,并将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*
}
}
在开关更改其状态之前如何执行某些操作,并能够撤消状态更改?
您可以在交换机上使用setClickable(false)
,然后在交换机的父级中侦听onClick
事件并以编程方式进行切换。开关仍将显示为已启用,但不会发生滑动动画,并且其状态也不会更改。
由于要确认用户的选择,请在onClick
中显示一个对话框,并让开关的状态取决于对话框上是否输入了'是'。
// if yes was tapped on the Dialog
switchInternet.setChecked(true);
} else {
switchInternet.setChecked(false);
}