title: Cannot refer to a non-final variable i inside an inner class defined in a different method
body: <p>i have "Cannot refer to a non-final variable i inside an inner class defined in a different method" error... Where am i going wrong?... I just started to learn android and java programming..</p>
  
  <pre><code>public class Tictac extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
  
          Button button[] = new Button[9];
          button[0]= (Button) findViewById(R.id.button1);
          button[1] = (Button) findViewById(R.id.button2);
          button[2] = (Button) findViewById(R.id.button3);
          button[3] = (Button) findViewById(R.id.button4);
          button[4] = (Button) findViewById(R.id.button5);
          button[5] = (Button) findViewById(R.id.button6);
          button[6] = (Button) findViewById(R.id.button7);
          button[7] = (Button) findViewById(R.id.button8);
          button[8] = (Button) findViewById(R.id.button9);
  
  
          final TextView text = (TextView) findViewById(R.id.textView1);
  
          final ImageView img[] = new ImageView[9];
          img[0] = (ImageView) findViewById(R.id.img1);
          img[1] = (ImageView) findViewById(R.id.img2);
          img[2] = (ImageView) findViewById(R.id.img3);
          img[3] = (ImageView) findViewById(R.id.img4);
          img[4] = (ImageView) findViewById(R.id.img5);
          img[5] = (ImageView) findViewById(R.id.img6);
          img[6] = (ImageView) findViewById(R.id.img7);
          img[7] = (ImageView) findViewById(R.id.img8);
          img[8] = (ImageView) findViewById(R.id.img9);
          final ImageView imSq[] = new ImageView[9];
          imSq[0] = (ImageView) findViewById(R.id.imSq1);
          imSq[1] = (ImageView) findViewById(R.id.imSq2);
          imSq[2] = (ImageView) findViewById(R.id.imSq3);
          imSq[3] = (ImageView) findViewById(R.id.imSq4);
          imSq[4] = (ImageView) findViewById(R.id.imSq5);
          imSq[5] = (ImageView) findViewById(R.id.imSq6);
          imSq[6] = (ImageView) findViewById(R.id.imSq7);
          imSq[7] = (ImageView) findViewById(R.id.imSq8);
          imSq[8] = (ImageView) findViewById(R.id.imSq9);
  
  
          for(int i =0;i &lt;=8;i++){
          if(i%2==0){
               button[i].setOnClickListener(new View.OnClickListener() {
                       public void onClick(View v) {
          **HERE--&gt;**       img[i].setVisibility(2);
                           text.setText("COOL");
  
                      }
                      });
          }
          else{   
               button[i].setOnClickListener(new View.OnClickListener() {
                       public void onClick(View v) {
           **HERE--&gt;**        imSq[i].setVisibility(2);
                           text.setText("COOL");
  
                      }
                      });
      }
  
  
  
          }
  
  }      
  </code></pre>
  
  <p>}</p>