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

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

Код:

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 ]

0 голосов
/ 28 декабря 2011

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

.setNegativeButton("No", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
               }
           });
0 голосов
/ 28 декабря 2011

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

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

Пример кода

.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                       saveDefaultSettings(); //this method sets the default settings of tha app                                    
                }
            })
0 голосов
/ 28 декабря 2011

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

...