0

これは、クリック後に edittext et[] のテキストを変更する + および - ボタンの for ループです。変数 x を final として宣言する必要があるというエラーがありますが、x が final として宣言されると、for ループの x++ x を final なしで宣言する必要があるという別のエラーが表示されます。onClick 内で変数 x を使用するにはどうすればよいですか?

          for(int x=0; x<itemAmt; x++){
        btn[0][x].setOnClickListener(new Button.OnClickListener(){
            public void onClick(View v) {

                int num=Integer.parseInt(et[x].getText().toString());
                num++;

            }

        });

        btn[1][x].setOnClickListener(new Button.OnClickListener(){
            public void onClick(View v) {

                int num=Integer.parseInt(et[x].getText().toString());
                num--;

            }

        });
        }
4

1 に答える 1

3

単純な回避策として、ループfinal内で変数を宣言して値を割り当てることができますforx

 for(int x=0; x<itemAmt; x++){
    final int myX = x;
    btn[0][x].setOnClickListener(new Button.OnClickListener(){
        public void onClick(View v) {

            int num=Integer.parseInt(et[myX].getText().toString());
            num++;

        }

    });

    btn[1][x].setOnClickListener(new Button.OnClickListener(){
        public void onClick(View v) {

            int num=Integer.parseInt(et[myX].getText().toString());
            num--;

        }

    });
    }
于 2013-04-08T14:43:44.870 に答える