Switch 在 Android 中更改其状态之前的操作



当用户想要将切换位置更改为关闭时,我需要显示"您确定?"对话框。

我创建了一个检查函数,并为交换机分配了一个 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);    
}   

最新更新