Android 如何在切换按钮更改代码时停止自动触发代码';s在AlertDialog中按cancel时的位置
当用户点击开关btn alertdialog时,会弹出询问是否要删除项目。若他点击“是”,开关btn将转到另一侧,若他点击“否”,开关应保持相同位置。问题是,如果他单击“是”,一切正常。如果他单击“否”,似乎开关btn转到另一侧,在他单击“否”后,它返回到原来的位置,并再次触发其中的代码,再次弹出alertdialog,因此它进入一个圆圈,退出该循环的唯一方法是单击“是”按钮。所以我的问题是如何停止这样做..我希望如果他点击“否”,我的开关btn保持在原来的位置,而不是再次自动触发我的代码,并且再次…我尝试将我的代码放入onTouchListener,OnChickeListener 我的代码:`Android 如何在切换按钮更改代码时停止自动触发代码';s在AlertDialog中按cancel时的位置,android,android-alertdialog,Android,Android Alertdialog,当用户点击开关btn alertdialog时,会弹出询问是否要删除项目。若他点击“是”,开关btn将转到另一侧,若他点击“否”,开关应保持相同位置。问题是,如果他单击“是”,一切正常。如果他单击“否”,似乎开关btn转到另一侧,在他单击“否”后,它返回到原来的位置,并再次触发其中的代码,再次弹出alertdialog,因此它进入一个圆圈,退出该循环的唯一方法是单击“是”按钮。所以我的问题是如何停止这样做..我希望如果他点击“否”,我的开关btn保持在原来的位置,而不是再次自动触发我的代码,并且
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,如果没有按下,则只需重新运行即可