Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在切换按钮更改代码时停止自动触发代码';s在AlertDialog中按cancel时的位置_Android_Android Alertdialog - Fatal编程技术网

Android 如何在切换按钮更改代码时停止自动触发代码';s在AlertDialog中按cancel时的位置

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

当用户点击开关btn alertdialog时,会弹出询问是否要删除项目。若他点击“是”,开关btn将转到另一侧,若他点击“否”,开关应保持相同位置。问题是,如果他单击“是”,一切正常。如果他单击“否”,似乎开关btn转到另一侧,在他单击“否”后,它返回到原来的位置,并再次触发其中的代码,再次弹出alertdialog,因此它进入一个圆圈,退出该循环的唯一方法是单击“是”按钮。所以我的问题是如何停止这样做..我希望如果他点击“否”,我的开关btn保持在原来的位置,而不是再次自动触发我的代码,并且再次…我尝试将我的代码放入onTouchListener,OnChickeListener

我的代码:`

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,如果没有按下,则只需重新运行即可