Java 最终整数对整数的值

Java 最终整数对整数的值,java,android,Java,Android,我目前正在玩android SDK(eclipse),我正在尝试制作一个简单的基于按钮的TictaToe游戏 我制作了一个数组,保存按钮,并尝试动态生成ClickEvents: 以下是代码(到目前为止有效): Eclipse告诉我:“将'i'的修饰符更改为final” 但是如果“i”是最终的,我就不能在循环中增加“i” 所以我试了一下: @Override public void onClick(View arg0) {

我目前正在玩android SDK(eclipse),我正在尝试制作一个简单的基于按钮的TictaToe游戏

我制作了一个数组,保存按钮,并尝试动态生成ClickEvents:

以下是代码(到目前为止有效):

Eclipse告诉我:“将'i'的修饰符更改为final”

但是如果“i”是最终的,我就不能在循环中增加“i”

所以我试了一下:

            @Override
            public void onClick(View arg0)
            {
                            final int position = i;
                buttons[position].setText("X");
            }
最终导致相同的错误“将'i'的修饰符更改为final”

所以我的问题是:我怎样才能让它工作

我试过谷歌,但什么也找不到,这真的是我第一次遇到这个问题

希望你们能帮助我


编辑:

解决方案很简单,下面是目前正在运行的代码:

        for(int i = 0;i < 9;i++)
    {
        final int position = i;
        buttons[i].setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View arg0)
            {
                buttons[position].setText("X");
            }
        });
    }
for(int i=0;i<9;i++)
{
最终int位置=i;
按钮[i].setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图arg0)
{
按钮[位置].setText(“X”);
}
});
}

在循环中创建另一个最终int变量,将其设置为与i相同的值,并从侦听器中引用此变量

for(int i = 0;i < 9;i++)
{
    final int index = i;
    buttons[i].setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View arg0)
        {
            buttons[index].setText("X");
        }
    });
}
for(int i=0;i<9;i++)
{
最终int指数=i;
按钮[i].setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图arg0)
{
按钮[索引].setText(“X”);
}
});
}

您可以执行以下操作:

for(int i = 0;i < 9;i++)
   {

      final int position = i;

      buttons[i].setOnClickListener(new View.OnClickListener()
      {
         @Override
         public void onClick(View arg0)
         {
            buttons[position].setText("X"); 
         }
      });
}
for(int i=0;i<9;i++)
{
最终int位置=i;
按钮[i].setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图arg0)
{
按钮[位置].setText(“X”);
}
});
}

有一个单独的类来实现
视图。OnClickListener
和一个构造函数来接受
索引值

您是否尝试将按钮数组设置为非最终值?您想做什么?为什么要在onClick侦听器中设置文本?伙计,你创建的变量和内容太多了。只需这样做:
((按钮)arg0.setText(“X”)
或更好的方法消除整个for循环和整个
按钮
数组,并将
onClick
添加到XML文件中。
for(int i = 0;i < 9;i++)
{
    final int index = i;
    buttons[i].setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View arg0)
        {
            buttons[index].setText("X");
        }
    });
}
for(int i = 0;i < 9;i++)
   {

      final int position = i;

      buttons[i].setOnClickListener(new View.OnClickListener()
      {
         @Override
         public void onClick(View arg0)
         {
            buttons[position].setText("X"); 
         }
      });
}