gpt4 book ai didi

java - 我想引用在不同方法中定义的内部类中的非最终变量

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:48 25 4
gpt4 key购买 nike

我正在编写一个 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);
}
});
}
}

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...

这行得通,但看起来很傻。有没有更好的办法?

最佳答案

是的,试试这个:

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);
}
});
}
}

关于java - 我想引用在不同方法中定义的内部类中的非最终变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9551773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com