android-如何更新警报对话框的状态多选项
在我的应用程序中,如果单击按钮,我将显示警报对话框。警报对话框由多选项和两个按钮(即“确定”和“取消”)组成。最初,我使用数组设置一些项(即,在代码选择中选中)android-如何更新警报对话框的状态多选项,android,android-alertdialog,Android,Android Alertdialog,在我的应用程序中,如果单击按钮,我将显示警报对话框。警报对话框由多选项和两个按钮(即“确定”和“取消”)组成。最初,我使用数组设置一些项(即,在代码选择中选中) 如果打开警报对话框,您做了一些更改,然后单击“确定”按钮,然后对话框关闭,再次打开警报对话框,它将显示更改(即警报对话框的此默认属性) 如果您打开警报对话框,您做了一些更改,然后单击“取消”按钮,然后对话框关闭并再次打开警报对话框。在这种情况下,我只想显示以前的状态(不显示更改)。我尝试了,但没有得到任何人的帮助 在代码中,choice
private OnClickListener书签\u btnListener=new OnClickListener()
{
公共void onClick(视图v)
{
尝试
{
showDialog(对话框多选项);
}
捕获(异常ex2)
{
System.out.println(“返回btn错误:+ex2.toString());
}
}
};
受保护的对话框onCreateDialog(int id){
开关(id){
案例对话框\u多选项:
bookmark\u dialog=新建AlertDialog.Builder(此);
bookmark_dialog.setTitle(“书签”);
bookmark_dialog.setMultiChoiceItems(选项,选中选项,新建OnMultiChoiceClickListener()){
public void onClick(DialogInterface对话框,int索引,布尔状态)
{
}
});
bookmark_dialog.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
public void onClick(对话框接口对话框,int whichButton)
{
对于(int i=0;i上述代码中的问题是,如果您第一次点击按钮,则使用onCreateDialog()只创建一次对话框。下次打开对话框时,不会应用任何更改。因此,我不建议在这种情况下使用onCreateDialog()。在这里,我为每次单击按钮创建对话框并显示它
// Code:
AlertDialog.Builder bookmark_dialog_obj;
private OnClickListener bookmark_btnListener = new OnClickListener()
{
public void onClick(View v)
{
try
{
Bookmark_Dialog(RB_UpcomingRestaurantDetails.this);
}
catch(Exception ex2)
{
System.out.println("back btn error:"+ex2.toString());
}
}
public void Bookmark_Dialog(Context context)
{
System.out.println("onCreate Choice_Checked:"+Arrays.toString(choice_checked));
bookmark_dialog_obj = new AlertDialog.Builder(context);
bookmark_dialog_obj.setTitle("Bookmarking for");
bookmark_dialog_obj.setMultiChoiceItems(choice, choice_checked, new OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog, int index, boolean status)
{
}
});
bookmark_dialog_obj.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];
}
}
});
bookmark_dialog_obj.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];
}
System.out.println("onCreate Cancel Choice_Checked:"+Arrays.toString(choice_checked));
}
});
bookmark_dialog_obj.show();
}
//代码:
AlertDialog.Builder书签对话框对象;
私有OnClickListener书签\u btnListener=new OnClickListener()
{
公共void onClick(视图v)
{
尝试
{
书签对话框(RB\u UpcomingRestaurantDetails.this);
}
捕获(异常ex2)
{
System.out.println(“返回btn错误:+ex2.toString());
}
}
“公用无效书签”对话框(上下文)
{
System.out.println(“onCreate Choice_Checked:+Arrays.toString(Choice_Checked));
bookmark\u dialog\u obj=新建AlertDialog.Builder(上下文);
书签对话框对象设置标题(“书签”);
bookmark\u dialog\u obj.setMultiChoiceItems(选项,选项已选中,新的OnMultiChoiceClickListener(){
public void onClick(DialogInterface对话框,int索引,布尔状态)
{
}
});
bookmark_dialog_obj.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
public void onClick(对话框接口对话框,int whichButton)
{
对于(int i=0;i只需使用show()而不是create()methode来显示对话框,并且在结束时不返回created dialog
dialog.show();
return null;
“活动”不保存对话框状态,因此“关闭”不起作用,但按“关闭多选项对话框”按钮可自行关闭对话框,或者您可以使用deleteDialog(int id)。我认为以下方法将满足您的要求
protected void showMultipleChoiceItems(final String[] items,
final boolean[] selections, String title,
boolean cancelButtonDisabled) {
Builder alertDialogBuilder = new Builder(this);
alertDialogBuilder.setTitle(title);
alertDialogBuilder.setMultiChoiceItems(items, selections,
new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
selections[which] = isChecked;
}
});
alertDialogBuilder.setNeutralButton(
"OK", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
if (cancelButtonDisabled)
alertDialogBuilder.setCancelable(false);
else
alertDialogBuilder.setNegativeButton(
"Cancel", null);
final AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
final Button btnOk = alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL);
btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog.dismiss();
onMultiSelect(items, selections);
}
});
}
// Override this method in the activity to define action on making multiple
// selections
public void onMultiSelect(String[] items, boolean[] selections) {
}
protected void showMultipleChoiceItems(final String[] items,
final boolean[] selections, String title,
boolean cancelButtonDisabled) {
Builder alertDialogBuilder = new Builder(this);
alertDialogBuilder.setTitle(title);
alertDialogBuilder.setMultiChoiceItems(items, selections,
new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
selections[which] = isChecked;
}
});
alertDialogBuilder.setNeutralButton(
"OK", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
if (cancelButtonDisabled)
alertDialogBuilder.setCancelable(false);
else
alertDialogBuilder.setNegativeButton(
"Cancel", null);
final AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
final Button btnOk = alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL);
btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog.dismiss();
onMultiSelect(items, selections);
}
});
}
// Override this method in the activity to define action on making multiple
// selections
public void onMultiSelect(String[] items, boolean[] selections) {
}