for (int i=0; i<pages; i++) {
ImageView img=new ImageView(this);
...
img.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) {
showpage(i);
}
}
});
FLall.addView(img);
}
Run Code Online (Sandbox Code Playgroud)
我怎么能在java中这样做?我总是"不能在不同方法中定义的内部类中引用非最终变量i"
虽然你可以创建一个垃圾变量并标记它,final但实际上我更喜欢通过构造函数传递这个值.它有点简洁,但是如果你决定在某个时候移动你的匿名内部类,那么它可以更加可维护.
for (int i=0; i<pages; i++) {
ImageView img=new ImageView(this);
...
img.setOnClickListener(new OnClickListener(i) {
private int ind;
public OnClickListener(int ind){
super();
this.ind = ind;
}
@Override
public void onClick(View v) {
showpage(ind);
}
});
FLall.addView(img);
}
Run Code Online (Sandbox Code Playgroud)
setOnClickListener通话前:
final int thisIndex = i;
Run Code Online (Sandbox Code Playgroud)
然后thisIndex在处理程序中引用.
| 归档时间: |
|
| 查看次数: |
1631 次 |
| 最近记录: |