Java 在“正”按钮中放大AlertDialog会导致最后一个对话框不会关闭

Java 在“正”按钮中放大AlertDialog会导致最后一个对话框不会关闭,java,android,android-alertdialog,android-dialog,Java,Android,Android Alertdialog,Android Dialog,我试图打开两个警报对话框,比如权限,第一个对话框在我按下正按钮时弹出并关闭,然后第二个对话框会膨胀,但当我在第二个警报对话框上按下正按钮时,它不会丢失并一直显示 private void requestXiaomiBootPermission(){ AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("Automatic boot

我试图打开两个警报对话框,比如权限,第一个对话框在我按下正按钮时弹出并关闭,然后第二个对话框会膨胀,但当我在第二个警报对话框上按下正按钮时,它不会丢失并一直显示

 private void requestXiaomiBootPermission(){

        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

        builder.setTitle("Automatic boot");
        builder.setMessage("we need this permission to work");
        builder.setCancelable(false);

        builder.setPositiveButton("Allow", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int i) {
                addAutoStartup();
                requestXiaomiBackgroundPermission();
                dialog.dismiss();
            }
        }).show();


        builder.setNegativeButton("Deny", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        }).show();

        builder.setNeutralButton("do not show", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        }).show();


        builder.show();
    }


    private void requestXiaomiBackgroundPermission(){

        AlertDialog.Builder builder2 = new AlertDialog.Builder(MainActivity.this);

        builder2.setTitle("Popup window");
        builder2.setMessage("we need this permission to work");
        builder2.setCancelable(false);

        builder2.setPositiveButton("Allow", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int i) {
                addPermissionsOnBackgroud();
                dialog.dismiss(); // --> Here it does not dismiss when this dialog inflates
            }
        }).show();


        builder2.setNegativeButton("Deny", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        }).show();

        builder2.setNeutralButton("do not show", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        }).show();

        builder2.show();
    }
电路是这样的


我打开应用程序,第一个对话框弹出(
requestXiaomiBootPermission()
),然后当我按下肯定按钮allow时,它会打开第二个对话框(
requestXiaomiBackgroundPermission()
),但当我在这个对话框上按下allow时,
dialog.discover()
不会关闭我的对话框并保留任何解决方案?

不要在每次调用
setXXXXXButton()
后调用
show()
。只要在最后调用它一次。您正在创建4个启动权限对话框和4个后台权限对话框,并且它们都堆叠在一起。

您正在打开这两个对话框4次。删除所有三个按钮后的show()方法。只需将show()方法保留在最后

private void requestXiaomiBootPermission(){

        AlertDialog.Builder builder = new AlertDialog.Builder(context);

        builder.setTitle("Automatic boot");
        builder.setMessage("we need this permission to work");
        builder.setCancelable(false);

        builder.setPositiveButton("Allow", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int i) {

                dialog.dismiss();
            }
        });


        builder.setNegativeButton("Deny", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });

        builder.setNeutralButton("do not show", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });


        builder.show();
    }

requestmibackgroundpermission()
执行了多少次?只在该正按钮中执行一次