onTouch覆盖 - Eclipse中的错误消息

时间:2011-11-13 20:55:04

标签: android eclipse ontouchevent ontouchlistener

我正在使用如下代码在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;   }

}

3 个答案:

答案 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。