В моето приложение показвам диалоговия прозорец за предупреждение, ако щракнете върху бутон. Диалоговият прозорец за предупреждение се състои от елементи с множество възможности за избор и 2 бутона (т.е. Ok и Cancel). Първоначално зададох някои елементи с помощта на масив (т.е. в кода choice_checked).
Ако отворите диалоговия прозорец за предупреждение, направили сте някои промени и щракнете върху бутона OK, след което отхвърлете диалоговия прозорец и отворете отново диалоговия прозорец за предупреждение, след което той показва промените (т.е. това свойство по подразбиране на диалоговия прозорец за предупреждение).
Ако отворите диалоговия прозорец за предупреждение, вие сте направили някои промени и щракнете върху бутона за отказ, след което отхвърлете диалоговия прозорец и отворете отново диалоговия прозорец за предупреждение, в този случай искам да покажа само предишното състояние (не показвайте промените). Опитах, но аз не получавам, моля, може ли някой да ми помогне.
В кода choice_checked и choice_checked_dynamic са булевите масиви.choice_checked_dynamic е дубликат на choice_checked. Означава, че първоначално тези два масива са еднакви. Ако сте направили някои промени в списъка и щракнете върху бутона OK, тогава променения масив се копира в choice_checked_dynamic. По подразбиране диалоговият прозорец за предупреждение показва само промените, така че е добре за бутона OK. Но в случай на бутон за отмяна, това означава, че ако сте направили някои промени, щракнете върху бутона за отмяна, тогава искам да покажа статут на choice_checked_dynamic (означава, че показах предишния статус).
Опитах, но не получавам, моля, може ли някой да ми помогне.
Код:
private OnClickListener bookmark_btnListener = new OnClickListener()
{
public void onClick(View v)
{
try
{
showDialog(DIALOG_MULTI_CHOICE);
}
catch(Exception ex2)
{
System.out.println("back btn error:"+ex2.toString());
}
}
};
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_MULTI_CHOICE:
bookmark_dialog = new AlertDialog.Builder(this);
bookmark_dialog.setTitle("Bookmarking for");
bookmark_dialog.setMultiChoiceItems(choice, choice_checked, new OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog, int index, boolean status)
{
}
});
bookmark_dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton)
{
for(int i=0;i<choice_checked.length;i++)
{
choice_checked_dynamic[i] = choice_checked[i];
}
dialog.dismiss();
}
});
bookmark_dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton)
{
for(int i=0;i<choice_checked_dynamic.length;i++)
{
choice_checked[i] = choice_checked_dynamic[i];
}
dialog.dismiss();
}
});
return bookmark_dialog.create();
}
return null;
}