我尝试动态创建一个ImageView,我想将此imageView作为参数传递给侦听器中的方法.
ImageView imageView1 = new ImageView(LookActivity.this);
imageView1.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
detectLocationAndShowPopUp(imageView1);
return true;
}
})
Run Code Online (Sandbox Code Playgroud)
但我正在采取以下错误:
不能在不同方法中定义的内部类中引用非最终变量imageView1.
我不想将imageView声明为final.我怎样才能克服这个问题?
您可以制作imageView1的副本,然后在侦听器中使用该副本:
ImageView imageView1 = new ImageView(LookActivity.this);
final ImageView imageView2 = imageView1;
imageView1.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
detectLocationAndShowPopUp(imageView2);
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
Sam发表评论后,我将我的代码更改为:
ImageView imageView1 = new ImageView(LookActivity.this);
imageView1.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
detectLocationAndShowPopUp((ImageView) view);
return true;
}
});
Run Code Online (Sandbox Code Playgroud)