更改局部变量android onClickListener

时间:2013-08-13 10:52:22

标签: java android android-dialog

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

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

1 个答案:

答案 0 :(得分:1)

不可能。

您可以在JLS # chapter 8

中找到
  

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

     

在内部类的主体之前,必须明确赋值(§16)使用但未在内部类中声明的任何局部变量。