Android 我们如何以编程方式区分开关集的状态更改和用户设置的状态更改?

Android 我们如何以编程方式区分开关集的状态更改和用户设置的状态更改?,android,android-recyclerview,android-switch,Android,Android Recyclerview,Android Switch,我有一个开关。它是这样工作的 1.打开它会显示您使用下载/定位/取消选项警告对话框,以执行(下载)/(本地定位)/(取消对话框) 2.将其关闭显示您使用Yes/No选项来删除文件的AlertDialog 现在,首先假设开关状态为OFF。现在,如果我打开它,监听器将在被检查为true时注册。接下来,如果我按下取消对话框,OnChecked将设置为false,因为没有找到/下载任何文件。现在,侦听器可以检测到此更改,即使它是通过编程方式设置的。我需要一种方法来划分开关由用户和程序引起的状态更改 我的

我有一个开关。它是这样工作的 1.打开它会显示您使用
下载/定位/取消
选项警告对话框,以执行
(下载)/(本地定位)/(取消对话框)

2.将其关闭显示您使用
Yes/No
选项来删除文件的AlertDialog

现在,首先假设开关状态为
OFF
。现在,如果我打开它,监听器将在被检查为true时注册。接下来,如果我按下取消对话框,OnChecked将设置为false,因为没有找到/下载任何文件。现在,侦听器可以检测到此更改,即使它是通过编程方式设置的。我需要一种方法来划分
开关
由用户和程序引起的状态更改

我的监听器是OnCheckedChangeListener

我知道网上也有类似问题的解决方案,要么是临时的,要么是不完整的


编辑:我编辑并更改了问题的完整结构,以解决我的根本目标。这应该不是问题,因为在本次编辑之前没有答案。

此问题的在线答案有多个。 它们包括编写扩展SwitchCompat、CompundButton等的自定义开关;用一种方法

如果不是OnCheckedChangeListener,而是实现OnClickListener,则不会出现任何警报对话框问题的递归。但我们无法检测此侦听器中的滑动更改

简单地说,我们需要通过单击/滑动来检测状态更改,而不存在递归问题:

CompoundButton.OnCheckedChangeListener下载ButtonListener=新建CompoundButton.OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(复合按钮视图,布尔值已检查){
if(holder.downloadSwitch.isPressed()&isChecked){
//如果通过单击/滑动打开开关
}
如果(holder.downloadSwitch.isPressed()&!已检查),则为else{
//如果通过单击/滑动打开开关
}
}

});你的最低目标是什么?MinsdkVersion19目标版本25。但是这与自定义开关和通货膨胀错误有什么关系呢?我在问,因为它是在API14中添加的……因为我的是API19,所以应该不会有问题。但是你能找出问题所在吗?我想是因为你的
mySwitch
没有初始化。它必须在所有构造函数中初始化。。。