解决方案 »

  1.   

    为什么一定要用匿名类你可以建个子类 .  用int做构造子参数。
      

  2.   

    你把t作为全局变量或者静态变量来访问就可以了
    可以通过类名来访问了ClassName.t
    private static int t;
    for(int t=0;t<num_btn.length;t++){
                 
                num_btn[t].setOnClickListener(new OnClickListener() {
                     
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        //这里内部类访问for语句的变量出现错误,定义final也会错误,因为i++;
    //                    mtv.append(num_btn[ClaaaName.t].getText());
                         
                    }
                });
            }
      

  3.   

    在中间声明一个final,每次在匿名类调用之前,先更新中间的这个final变量public class A {
        public void foo(){
            for(int i=0;i<3;i++){
                final int ii = i;  // 放中间,每次给final赋值就可以了
                Thread t = new Thread(new Runnable() {
                    
                    @Override
                    public void run() {
                        System.out.printf("%s's i=%d%n", Thread.currentThread().getName(),
                                ii);
                    }
                });
                t.start();
            }
        }
        
        public static void main(String[] args) {
            new A().foo();
        }
    }