如何停止自动触发我的代码时切换按钮改变它的位置按下 AlertDialog 中的取消
How to stop auto triggering my code when switch button change it's position on pressing cancel in AlertDialog
当用户点击开关 btn 时,将弹出警告对话框询问他是否要删除项目。如果他点击是开关 btn 将转到另一侧,如果他点击没有开关应该保持相同的位置。问题是,如果他单击“是”,一切正常,如果他单击“否”,似乎开关 btn 转到另一侧,在他单击“否”后 return 在旧位置并再次触发其中的代码并再次弹出 alertdialog向上,所以它进入一个圆圈,退出该循环的唯一方法是单击是按钮。所以我的问题是如何停止这样做..我希望如果他不点击我的开关 btn 留在旧位置而不是再次自动触发我的代码......我尝试将我的代码放在 onTouchListener,onCickeListener ....
我的代码:`
aSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (isChecked){
AlertDialog.Builder dialogBuider = new AlertDialog.Builder(MainActivity.this);
dialogBuider.setMessage("Delete item?");
dialogBuider.setPositiveButton("Yes", (dialog, which) -> {
dialog.dismiss();
});
dialogBuider.setNegativeButton("No", (dialog, id) -> {
dialog.cancel();
});
dialogBuider.setOnCancelListener(dialog -> {
aSwitch.setChecked(false);
});
AlertDialog alertDialog = dialogBuider.create();
alertDialog.show();
}
else {
AlertDialog.Builder dialogBuider = new AlertDialog.Builder(MainActivity.this);
dialogBuider.setMessage("Delete Item?");
dialogBuider.setPositiveButton("Yes", (dialog, which) -> {
dialog.dismiss();
});
dialogBuider.setNegativeButton("No", (dialog, id) -> {
dialog.cancel();
});
dialogBuider.setOnCancelListener(dialog -> {
aSwitch.setChecked(true);
});
AlertDialog alertDialog = dialogBuider.create();
alertDialog.show();
}
});`
好吧,我找到了解决方案,如果有人 运行 遇到同样的问题,只需使用
if (!buttonView.isPressed())
return;
在 setOnCheckedChangeListener()
里面,这样你就可以检查 btn 开关是否被按下,如果没有按下则重新调整
当用户点击开关 btn 时,将弹出警告对话框询问他是否要删除项目。如果他点击是开关 btn 将转到另一侧,如果他点击没有开关应该保持相同的位置。问题是,如果他单击“是”,一切正常,如果他单击“否”,似乎开关 btn 转到另一侧,在他单击“否”后 return 在旧位置并再次触发其中的代码并再次弹出 alertdialog向上,所以它进入一个圆圈,退出该循环的唯一方法是单击是按钮。所以我的问题是如何停止这样做..我希望如果他不点击我的开关 btn 留在旧位置而不是再次自动触发我的代码......我尝试将我的代码放在 onTouchListener,onCickeListener ....
我的代码:`
aSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (isChecked){
AlertDialog.Builder dialogBuider = new AlertDialog.Builder(MainActivity.this);
dialogBuider.setMessage("Delete item?");
dialogBuider.setPositiveButton("Yes", (dialog, which) -> {
dialog.dismiss();
});
dialogBuider.setNegativeButton("No", (dialog, id) -> {
dialog.cancel();
});
dialogBuider.setOnCancelListener(dialog -> {
aSwitch.setChecked(false);
});
AlertDialog alertDialog = dialogBuider.create();
alertDialog.show();
}
else {
AlertDialog.Builder dialogBuider = new AlertDialog.Builder(MainActivity.this);
dialogBuider.setMessage("Delete Item?");
dialogBuider.setPositiveButton("Yes", (dialog, which) -> {
dialog.dismiss();
});
dialogBuider.setNegativeButton("No", (dialog, id) -> {
dialog.cancel();
});
dialogBuider.setOnCancelListener(dialog -> {
aSwitch.setChecked(true);
});
AlertDialog alertDialog = dialogBuider.create();
alertDialog.show();
}
});`
好吧,我找到了解决方案,如果有人 运行 遇到同样的问题,只需使用
if (!buttonView.isPressed())
return;
在 setOnCheckedChangeListener()
里面,这样你就可以检查 btn 开关是否被按下,如果没有按下则重新调整