1

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

           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所以我不知道我将如何关闭它。很抱歉,我已经像其他人一样第 100 万次问了同样的问题,但我无法理解这种情况。谢谢

4

4 回答 4

2

使用setItems(), 而不是setSingleChoiceItems().

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

于 2013-03-19T11:03:24.870 回答
0

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

于 2013-03-19T11:02:33.930 回答
0

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

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

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

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

经过alert = builder.create();

于 2013-03-19T11:04:33.283 回答
0

试试这个

builder.create().show(); 

代替

final AlertDialog alert = builder.create();
alert.show();
于 2013-03-19T11:08:15.390 回答