java - 内部类中的非最终变量

标签 java android

我尝试动态创建一个 ImageView,我想将此 imageView 作为参数传递给监听器中的方法。

            ImageView imageView1 = new ImageView(LookActivity.this);

            imageView1.setOnTouchListener(new OnTouchListener() {

                    @Override
                    public boolean onTouch(View arg0, MotionEvent arg1) {
                        detectLocationAndShowPopUp(imageView1);
                        return true;
                    }
                })

但是我出现了以下错误:
不能在不同方法中定义的内部类中引用非最终变量 imageView1。

我不想将 imageView 声明为最终的。我该如何克服这个问题?

最佳答案

您可以制作 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;
    }
});

在 Sam 发表评论后,我将代码更改为:

ImageView imageView1 = new ImageView(LookActivity.this);

imageView1.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent event) {
        detectLocationAndShowPopUp((ImageView) view);
        return true;
    }
});

关于java - 内部类中的非最终变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15028156/

相关文章:

java - 正确签名的 JNLP 应用程序无法在 Java 7 中运行

java - 通过 Maven 故障安全插件运行 Spring Boot 测试时出现 IllegalStateException。

android - 从右到左对齐工具栏图标?

java - Android中的mp3标题读取问题

android - Android 中如何更改选定行的背景颜色?

Java While 循环检查时间但不执行方法

java - c :url tag includes jsession id query string

Java ArrayList 空指针

android - java.lang.RuntimeException : Parcel: unable to marshal value com. package.NutritionInfo@84055e1

安卓linux环境变量