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