1

我需要将此方法的返回值设置为在单选对话框中选择的项目...

但是,我无法设置 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;
}
4

1 回答 1

1

不可能。

您可以在JLS # 第 8 章中找到它

任何使用但未在内部类中声明的局部变量、形参或异常参数都必须声明为 final。

任何使用但未在内部类中声明的局部变量必须在内部类的主体之前明确分配(第 16 节)。

于 2013-08-13T11:04:02.873 回答