Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 变量是从内部类中访问的,需要声明为final_Android_Checkbox_Inner Classes_Final - Fatal编程技术网

Android 变量是从内部类中访问的,需要声明为final

Android 变量是从内部类中访问的,需要声明为final,android,checkbox,inner-classes,final,Android,Checkbox,Inner Classes,Final,我使用多个复选框,需要对选中的复选框执行不同的操作,即根据选中的复选框增加一些静态变量 所以问题是我不能使变量i成为final(使用循环),否则它在内部类中不可访问。 有什么解决办法我可以解决吗 for (int i = 1; i <= 99; i++) { int ids = Integer.parseInt("R.id.s" + i); seats[i] = (CheckBox) findViewById(ids); se

我使用多个复选框,需要对选中的复选框执行不同的操作,即根据选中的复选框增加一些静态变量

所以问题是我不能使变量i成为final(使用循环),否则它在内部类中不可访问。 有什么解决办法我可以解决吗

  for (int i = 1; i <= 99; i++)

    {
        int ids = Integer.parseInt("R.id.s" + i);

        seats[i] = (CheckBox) findViewById(ids);
        seats[i].setWidth(15);
        seats[i].setHeight(16);

        seats[i].setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(i<=33)
                    SelectSeat.ROYAL++;

                if(i<=77 && i>33)
                SelectSeat.PLAT++;

                else
                    SelectSeat.GOLD++;
            }
        });
    }

for(int i=1;i用以下代码替换您的代码:

for (int i = 1; i <= 99; i++)

    {
        int ids = Integer.parseInt("R.id.s" + i);

        seats[i] = (CheckBox) findViewById(ids);
        seats[i].setWidth(15);
        seats[i].setHeight(16);

        final int finalI = i;
        seats[i].setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(finalI <=33)
                    SelectSeat.ROYAL++;

                if(finalI <=77 && finalI >33)
                    SelectSeat.PLAT++;

                else
                    SelectSeat.GOLD++;
            }
        });
    }
for(int i=1;i快速简便的修复,谢谢(y)