Search code examples
androidandroid-alertdialogpreferencecustomdialog

Android - Confirm Dialog when changing the preference


can anyone suggest me a way to perform AlertDialog to confirm the changes when change the CheckboxPreference or SwitchPrerence, ex. if i want to Uncheck the Preference the AlertDialog should warn them like "Are you sure want to uncheck?" plus the dialog should be customizable because i am gonna use own Layout. i don't want the Default Bluestrip Header with the Dialog.

SwitchPreference pref = (SwitchPreference) findPreference("prefkey_use_passcode");
    pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

        @Override
        public boolean onPreferenceChange(Preference arg0, Object arg1) {
            DialogPreference dialog = new DialogPreference(getParent());

            return false;
        }
    });

Solution

  • Something like this should work:

          AlertDialog.Builder builder = new AlertDialog.Builder (this);
          builder.setMessage (getString (R.string.are_you_sure));
          builder.setNegativeButton (getString(android.R.string.cancel),
                                     new DialogInterface.OnClickListener()
                                     {
                                       @Override
                                       public void onClick (DialogInterface dialog, int which)
                                       {
                                         finish();
                                       }
                                     });
          builder.setPositiveButton (getString(android.R.string.ok),
                                     new DialogInterface.OnClickListener()
                                     {
                                       @Override
                                       public void onClick (DialogInterface dialog, int which)
                                       {
                                         --- do the work to update the preference ---
                                         finish();
                                       }
                                     });
          builder.create().show();
          return;