【问题标题】:Multiple Alert Dialogs多个警报对话框
【发布时间】:2018-07-29 15:21:02
【问题描述】:

我创建了两个警报对话框。我希望只有在第一个警报对话框上单击是时才会出现第二个警报对话框。但两者都一直在显示。

警报对话框代码

    DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            switch (which){
                case DialogInterface.BUTTON_POSITIVE:
                    //Yes button clicked
                    //Would like the second Alert Dialog to Display Now
                    YesOrNo = "Yes";
                    break;

                case DialogInterface.BUTTON_NEGATIVE:
                    //No button clicked
                    YesOrNo = "No";
                    GIVE.setBackgroundColor(Color.RED);
                    break;
            }
        }
    };

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Are you Giving or Teaching for Free?").setPositiveButton("Yes", dialogClickListener)
            .setNegativeButton("No", dialogClickListener).show();

if ( YesOrNo == "Yes" ) {
    DialogInterface.OnClickListener dialogClickListener1 = new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            switch(which) {
                case DialogInterface.BUTTON_POSITIVE:
                    break;

                case DialogInterface.BUTTON_NEGATIVE:
                    PROBLEM.setBackgroundColor(Color.RED);
            }
        }
    };
    AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
    builder1.setMessage("Are you Really Happy With Your Current Giving or Teaching For Free?").setPositiveButton("Yes", dialogClickListener1)
            .setNegativeButton("No", dialogClickListener1).show();
}

谢谢

【问题讨论】:

  • 您可以将第二个对话框置于“是”单击中。

标签: android android-alertdialog


【解决方案1】:

试试这个,

 DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
        switch (which){
            case DialogInterface.BUTTON_POSITIVE:
                //Yes button clicked
                //Would like the second Alert Dialog to Display Now
                DialogInterface.OnClickListener dialogClickListener1 = new 
                DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                      switch(which) {
                               case DialogInterface.BUTTON_POSITIVE:
                               break;

                               case DialogInterface.BUTTON_NEGATIVE:
                                  PROBLEM.setBackgroundColor(Color.RED);
                     }
               }
      };
     AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
     builder1.setMessage("Are you Really Happy With Your Current Giving or 
     Teaching For Free?").setPositiveButton("Yes", dialogClickListener1)
     .setNegativeButton("No", dialogClickListener1).show();                    
     break;

            case DialogInterface.BUTTON_NEGATIVE:
                //No button clicked
                YesOrNo = "No";
                GIVE.setBackgroundColor(Color.RED);
                break;
        }
    }
};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you Giving or Teaching for Free?").setPositiveButton("Yes", dialogClickListener)
        .setNegativeButton("No", dialogClickListener).show();

【讨论】:

    【解决方案2】:

    当您打开第二个 dialog 时,首先关闭您 dialog,使用 dialog.dismiss();,当您先单击“是”时,它将首先打开 dismiss dialog,然后打开第二个 dialog

    参考:https://stackoverflow.com/a/14853382/8448886

    完整代码在这里:

    AlertDialog.Builder builder;
    
         DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
    
            @Override
            public void onClick(DialogInterface dialog, int which) {
                switch (which){
                    case DialogInterface.BUTTON_POSITIVE:
                        //Yes button clicked
                        //Would like the second Alert Dialog to Display Now
                        YesOrNo = "Yes";
                        //dialog.dismiss(); 
                        dialog.cancel();
                        break;
    
                    case DialogInterface.BUTTON_NEGATIVE:
                        //No button clicked
                        YesOrNo = "No";
                        GIVE.setBackgroundColor(Color.RED);
                        break;
                }
            }
        };
    
        builder = new AlertDialog.Builder(this);
        builder.setMessage("Are you Giving or Teaching for Free?").setPositiveButton("Yes", dialogClickListener)
                .setNegativeButton("No", dialogClickListener).show();
    

    【讨论】:

    • 您添加的行不起作用,因为我收到以下错误无法解析符号生成器。
    • 我编辑了我的代码,请再次检查@AnonymousZA 使用 dialog.dismiss();
    • 也可以试试 dialog.cancel();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    相关资源
    最近更新 更多