-2

I have created two alert Dialogs. I would like the second Alert Dialog to only appear if I click yes on the first Alert Dialog. But both are always showing.

Alert Dialog Code

    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();
}

Thanks

AnonymousZA
  • 121
  • 1
  • 11

2 Answers2

0

Dismiss you first dialog when you opening your second dialog , by using dialog.dismiss();, when you click on yes first it will dismiss first dialog then open second dialog.

Reference : https://stackoverflow.com/a/14853382/8448886

Full code here :

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();
Abhishek kumar
  • 4,347
  • 8
  • 29
  • 44
0

try this one,

 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();
Saif
  • 723
  • 6
  • 21