我正在使用如下代码在Android应用中实现多点触控。我在网上多次看到这样的代码示例,所以我很困惑地发现Eclipse经常给我一个“触摸类型触摸必须覆盖超类方法的onTouch(View,MotionEvent)方法 “这里的错误信息,不会让我执行代码。构建目标是Android 2.1,图像资源存在,清单文件看起来很好等。
有没有人知道为什么Eclipse可能会在这里标记错误?
package org.example.touch;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
public class Touch extends Activity implements OnTouchListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView view = (ImageView) findViewById(R.id.imageView);
view.setOnTouchListener(this);
}
**@Override
public boolean onTouch(View v, MotionEvent event)** {
return true; }
}
答案 0 :(得分:2)
尝试更改项目|属性| JavaCompiler到1.6。在1.6之前,它不允许在接口方法上使用@Overrides。
(我认为你可以安全地使用1.6级btw,Java 1.6可能不支持构建Android源代码(意味着它不会使用此设置构建)但是对于构建应用程序它工作正常并且我从未见过'使用1.5'通知。当然,我们是否确实@Override接口方法是一个哲学问题,我们不需要为了实际目的而深入研究这个问题。)
答案 1 :(得分:1)
确保您导入了侦听器
import android.view.View.OnTouchListener;
在您的文件顶部与其他导入。
答案 2 :(得分:0)
Android从一开始就基于Java 5标准构建,并且(如前面的答案所述)Java 5不支持实现接口方法的方法的@Override注释,仅支持覆盖超类方法的方法。
虽然将Eclipse中的Java编译器设置设置为1.6允许您这样做,但我个人认为将编译器设置保持(或设置)为1.5并删除注释是可行的方法。
我意识到它与编写独立的Android应用程序没有直接联系,但Android source page明确地说:
JDK 5.0,更新12或更高版本。由于与@Override不兼容,不支持Java 6。