我需要将此方法的返回值设置为单选对话框中选择的项目...
但是,我无法设置retVal的值,因为它显然需要是最终的(因此无法更改)
有没有办法在不使用全局变量的情况下执行此操作?
private String getSaleType()
{
String retVal = "";
final String[] TYPES = {"Cash Sale", "Sales Order"};
AlertDialog.Builder choose = null;
try
{
choose = new AlertDialog.Builder(this);
choose.setIcon(R.drawable.firstdroidicon);
choose.setTitle("Sale Type");
choose.setMessage("Type Of Sale?");
choose.setSingleChoiceItems(TYPES, currentItem, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Log.i("Selected", TYPES[which]);
}
});
choose.setPositiveButton("OK", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
retVal = TYPES[which];
}
});
}
catch(Exception e)
{
messageBox("getSaleType", e.getMessage());
}
return retVal;
}
答案 0 :(得分:1)
不可能。
您可以在JLS # chapter 8
中找到使用但未在内部类中声明的任何局部变量,形式参数或异常参数必须声明为final。
在内部类的主体之前,必须明确赋值(§16)使用但未在内部类中声明的任何局部变量。