无论我是以编程方式还是在xml文件中设置onClick
方法,我都不知道如何通过它传递额外的参数。在以下代码中:
for (int i = 0; i < 6; i++) {
rollView[i].setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
changeKeepRoll(i);
}
});
}
我为6个不同的onClickListener
设置TextView
,我想调用以整数参数作为输入的方法changeKeepRoll
,但是我得到了错误&#39;变量&#39;我&#39;从内部类中访问,需要声明最终&#39;。这意味着什么,我该如何纠正它?
答案 0 :(得分:2)
for (int i = 0; i < 6; i++) {
final int temp = i;
rollView[i].setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
changeKeepRoll(temp);
}
});
}
答案 1 :(得分:1)
实现OnClickListener类并使用不同的参数集重载方法
public class myClass implements View.OnClickListener {
int changeKeepRoll;
@Override
public void onClick(View v) {
}
public void onClick(int i) {
}
}
将changeKeepRoll变量置于方法范围之外或使其成为最终。
答案 2 :(得分:1)
您可以通过实现接口将参数传递给OnClickListener
:
class MyOnClickListener implements OnClickListener {
private int i;
public MyOnClickListener(int i) {
this.i = i;
}
public void onClick(View view) {
changeKeepRoll(i);
}
}
并且,您的for
循环将如下所示:
for(int i = 0; i < rollView.length; i ++) {
rollView[i].setOnClickListener(new MyOnClickListener(i));
}
之前有人问过: How to pass parameters to OnClickListener?
希望这有帮助, 巴拉