为什么我无法隐藏我的单选AlertDialog?

时间:2013-03-19 10:57:59

标签: java android android-alertdialog

我正在尝试显示一个对话框,允许用户使用此代码段选择一个值:

           AlertDialog.Builder builder = new AlertDialog.Builder(this.objActivity);
           builder.setTitle("Alert Dialog with ListView");
           builder.setIcon(R.drawable.ic_launcher);
           builder.setSingleChoiceItems(lstNames.toArray(new CharSequence[lstNames.size()]), 1, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int intItem) {

                   PreferenceCategory targetCategory = (PreferenceCategory) StopFinder.this.objActivity.findPreference("monitored_stops");
                   final Preference account = new Preference(StopFinder.this.objActivity);
                   account.setKey(lstIds.get(intItem));
                   account.setTitle(lstStops.get(intItem));
                   account.setSummary(lstNumbers.get(intItem));
                   targetCategory.addPreference(account);
                   dialog.dismiss();

               }
           });
           final AlertDialog alert = builder.create();
           alert.show();

当用户选择一个项目时,我想解除对话但是我无法这样做?

我已经读过我需要关闭alert,但alert方法之后onClick被初始化,所以我不知道如何解雇这个问题。对不起,我第一百万次和其他人一样问过同样的问题,但是我无法绕过这个场景。感谢

4 个答案:

答案 0 :(得分:2)

使用setItems()代替setSingleChoiceItems()

它会在单击项目时关闭对话框,并调用您的回调函数。

答案 1 :(得分:0)

我认为您可以将警报声明为类的私有变量,然后您可以在使用onClick事件中的alert.dismiss()调用click和dismiss之前为其分配值。

答案 2 :(得分:0)

尝试在onCreate()之前声明警报;像这样

AlertDialog alert;
@Override
protected void onCreate(Bundle savedInstanceState) {

然后使用alert.dismiss();代替dialog.dismiss();

另外,请替换final AlertDialog alert = builder.create();

alert = builder.create();

答案 3 :(得分:0)

试试这个

builder.create().show(); 

而不是

final AlertDialog alert = builder.create();
alert.show();