如何从内部方法更改对象的值?

时间:2012-04-05 23:57:15

标签: java

我需要从方法newiconid[0]arg2的值更改为onItemSelected()。我需要在onClick()中使用该值。以下代码不起作用,只是将newiconid[0]的值保留为0。如何做到这一点?

@Override
public void onClick(DialogInterface dialog,
        int which) {
    final int newiconid[] = new int[1];
    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(
                AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            // TODO Auto-generated method stub
            System.out.println("" + arg1 + arg2
                    + arg3);
            newiconid[0] = arg2;
        }

        @Override
        public void onNothingSelected(
                AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });
    // TODO Auto-generated method stub
    System.out.println("updateicon "+newiconid[0]+" "+itemid);
    datasource.updateVSIcon(newiconid[0], itemid);
}

2 个答案:

答案 0 :(得分:2)

你已经做了 FINAL ,Final是常量,一旦初始化就不要改变。首先尝试最终结果,让我们知道会发生什么。

答案 1 :(得分:2)

您可以尝试让newiconid成为班级成员吗?然后应该可以在两个范围中访问它。是的,正如@ Agent404所说,不要让它成为final