Android - Как отобразить предыдущий статус, если вы нажмете на кнопку отмены диалоговых окон элементов оповещения

В моем приложении я использую диалоговое окно оповещения, состоящее из нескольких пунктов с положительными и отрицательными кнопками. Если вы измените состояния элементов выбора, предположим, что если вы нажмете кнопку "ОК", то в следующий раз откроется диалоговое окно "Я хочу показать состояние обновления". Если вы нажмете кнопку "Отмена", то в следующий раз я хочу показать предыдущий статус. Кнопка "ОК" работает нормально, но функция кнопки "Отмена" не работает. Я пытался, но не получил, пожалуйста, кто-нибудь может мне помочь.

Код:

protected Dialog onCreateDialog(int id) 
{

    switch (id) { 
    case DIALOG_MULTI_CHOICE:
         System.out.println("In dialog Choice_Checked:"+Arrays.toString(choice_checked));       
        return new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.singlechoicelistitem))
            .setTitle("Bookmarking for")
            .setMultiChoiceItems(choice, choice_checked, new OnMultiChoiceClickListener() {
                public void onClick(DialogInterface dialog, int index, boolean status) {                                      
                    if(status)
                    {
                        choice_checked_dynamic[index] = true;
                    }    
                    else
                    {
                        choice_checked_dynamic[index] = false;
                    }
                }                   
            })
            .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {                       
                    saveBookmarkAction();
                }
            })
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                      ((Builder) dialog).setMultiChoiceItems(choice, choice_checked, null);
                      ((Builder) dialog).create();                                          
                }
            })
           .create();
    }
    return null;
}

3 ответа

При нажатии на кнопку отмены необходимо сохранить настройки по умолчанию.

создать метод для установки настроек по умолчанию и вызвать этот метод по нажатию кнопки отмены

Образец кода

.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                       saveDefaultSettings(); //this method sets the default settings of tha app                                    
                }
            })

Если вашим предыдущим состоянием является действие, то при нажатии кнопки отмены onClick, намерение выполнить предыдущее действие, в противном случае простое сохранение функции onClick оставит цель остаться в том же действии.

Поместите dialog.cancel в отрицательный код кнопки

.setNegativeButton("No", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
               }
           });
Другие вопросы по тегам