1
final String[] choices = { "Item 1", "Item 2", "Item 3"};

final AlertDialog dialog= new AlertDialog.Builder(
    TestSubjectCalendar.this)
    .setTitle("Title")
    .setSingleChoiceItems(choices, pos, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss(); //gives error
            // MORE CODE
        }
    }).create();
    dialog.show();

dialog.dismiss()给出以下错误:

局部变量对话框可能尚未初始化

我想要的是,当我从 中的选择列表中单击一个项目时dialogdialog应该消失。那么我该怎么做呢?

PS:我知道我可以使用setItems()而不是setSingleChoiceItems(),但我想使用后者,因为它提供单选按钮。

4

3 回答 3

1

您需要更改对话框的名称,因为onClick()中的AlertDialogDialogInterface使用相同的名称...

尝试以下更改并检查它。

 @Override
 public void onClick(DialogInterface dialog1, int which) {
      dialog1.dismiss(); //gives error
      // MORE CODE
 }

那就是解决名称覆盖,我只是在onClick()中将对话框更改对话框1

于 2013-07-13T06:19:06.937 回答
0

尝试这个:

 final String[] choices = { "Item 1", "Item 2", "Item 3"};

final AlertDialog.Builder dialog= new AlertDialog.Builder(TestSubjectCalendar.this);

dialog.setTitle("Title")
.setSingleChoiceItems(choices, pos, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss(); //gives error
        // MORE CODE
    }
}).create();
dialog.show();
于 2013-07-13T05:30:47.553 回答
0

基本上,由于您在初始化对话框的同一代码块中引用对话框,因此Eclipse/Java编译器担心其中使用的对话框引用onClick(DialogInterface dialog, int which)可能无效。

因此将其更改为:

    final AlertDialog dialog= new AlertDialog.Builder(
            TestSubjectCalendar.this).create();
            dialog.setTitle("Title");
            dialog.setSingleChoiceItems(choices, pos, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss(); //gives error
                    // MORE CODE
                }
            });
            dialog.show();

应该做的伎俩。附带说明一下,您的代码实际上没有任何错误,可能与编译器设置有关。

于 2013-07-13T05:35:30.323 回答