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()
发出以下错误:
可能尚未初始化局部变量对话框
我想要的是,当我点击dialog
中的选项列表中的某个项目时,dialog
应该会消失。那我怎么能这样做呢?
PS:我知道我可以使用setItems()
代替setSingleChoiceItems()
,但我想使用后者,因为它提供了单选按钮。
答案 0 :(得分:1)
您需要更改对话框的名称,因为 onClick()中的 AlertDialog 和 DialogInterface 具有相同的名称... < / p>
尝试以下更改并将其签出。
@Override
public void onClick(DialogInterface dialog1, int which) {
dialog1.dismiss(); //gives error
// MORE CODE
}
即解决名称覆盖问题,我只需在onClick()中将对话框更改为 dialog1 。
答案 1 :(得分: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();
答案 2 :(得分: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();
应该做的伎俩。另外,我的代码实际上没有任何错误,可能与编译器设置有关。