我正在编写一个Android应用程序,其中我有几个按钮布局在网格中.我想设置每个按钮的onClick方法,所以我写了这个:
for (int i = 0; i < button.length; i++) {
for (int j = 0; j < button[0].length; j++) {
button[i][j].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
press(i, j);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
在press(int i, int j)别处实施的地方.我得到错误,"不能引用在不同方法中定义的内部类中的非最终变量i".
所以,现在我只需写出每个函数,如下所示:
button[0][0].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
press(0, 0);
}
});
button[0][1].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
press(0, 1);
}
});
// more like this...
Run Code Online (Sandbox Code Playgroud)
这有效,但看起来很傻.有没有更好的办法?
是的,试试这个:
for (int i = 0; i < button.length; i++) {
for (int j = 0; j < button[0].length; j++) {
final int listenerI = i;
final int listenerJ = j;
button[i][j].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
press(listenerI, listenerJ);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1899 次 |
| 最近记录: |