在我的应用程序中,如果您点击按钮,我会显示警报对话框。警报对话框包含多项选择和2个按钮(即确定和取消)。最初,我使用数组设置了一些项目(即,在代码choice_checked中)。
代码:
- 如果您打开警报对话框并进行更改,然后单击确定按钮,则对话框将关闭,再次打开警报对话框,则显示更改(即,这是警报对话框的默认属性)。
- 如果您打开警报对话框并进行更改,然后单击取消按钮,则对话框将关闭,再次打开警报对话框,在这种情况下,我只想显示先前的状态(不显示更改)。我尝试过,但没有成功,请问有人可以帮助我吗?
- 在代码中,choice_checked和choice_checked_dynamic是布尔数组。choice_checked_dynamic是choice_checked的副本。这意味着最初这两个数组是相同的。如果您更改了列表并单击确定按钮,则更改后的数组将复制到choice_checked_dynamic中。默认情况下,警报对话框仅显示更改,因此对于确定按钮来说很好。但是,在取消按钮的情况下,如果您进行了一些更改,则我想显示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;
}