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

问题描述 投票:1回答:1

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

我创建了一个检查函数,并将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*
        }
    }

在开关更改其状态之前如何执行某些操作,并能够撤消状态更改?

android kotlin switch-statement
1个回答
0
投票

您可以在交换机上使用setClickable(false),然后在交换机的父级中侦听onClick事件并以编程方式进行切换。开关仍将显示为已启用,但不会发生滑动动画,并且其状态也不会更改。

由于要确认用户的选择,请在onClick中显示一个对话框,并让开关的状态取决于对话框上是否输入了'是'。

// if yes was tapped on the Dialog
        switchInternet.setChecked(true);           
    } else {
        switchInternet.setChecked(false);    
    }   
© www.soinside.com 2019 - 2024. All rights reserved.