我正在尝试存储和使用单选警报对话框的选定项目。
到目前为止,这是我的代码:
final String[] deviceNames = getBTPairedDeviceNames();
int selpos;
new AlertDialog.Builder(this)
.setSingleChoiceItems(deviceNames, 0, null)
.setPositiveButton("O.K.", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition();
// Do something useful with the position of the selected radio button
selpos = selectedPosition;
}
})
.show();
Toast.makeText(this, "" + selpos, Toast.LENGTH_SHORT) .show();
尝试分配给selpos时出现编译错误。该错误显示为:
“无法引用用不同方法定义的内部类内的非最终变量selpos”
将selpos设置为最终结果会导致错误:
“无法分配最终的局部变量selpos,因为它是用封闭类型定义的”
如何从代码块中获取所选项目的位置?
谢谢
最佳答案
最简单的方法,将变量声明为类中的字段(而不是函数中的字段)。
int selpos; //declare in class scope
public void yourFunction() {
//don't declare here
//int selpos;
new AlertDialog.Builder(this)
.setSingleChoiceItems(deviceNames, 0, null)
.setPositiveButton("O.K.", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition();
// Do something useful with the position of the selected radio button
selpos = selectedPosition;
}
})
.show();
}