2011-11-13 4 views
1

Androidアプリでマルチタッチピンチを実装するために、以下のようなコードを使用しています。 Web上でこのようなコード例がいくつか見られたので、私はEclipseが常に "Touchの型のonTouch(View、MotionEvent)メソッドはスーパークラスメソッドをオーバーライドする必要があります"というエラーメッセージを表示します。私はコードを実行させません。ビルド対象はAndroid 2.1、イメージリソースは存在し、マニフェストファイルは見栄えがよいなど。onTouchオーバーライド - 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

これをEclipseにコピーしました。エラーはありません。奇妙な。きれいにしてビルドしてください。 – C0deAttack

答えて

2

プロジェクトを変更してみてください|プロパティ| 1.6にJavaCompiler。 1.6以前では、インタフェースメソッドで@Overrideを使用することはできません。

(私は安全に1.6レベルのbtwを使うことができると思います、Java 1.6はAndroidソースコードをビルドするためにサポートされていないかもしれませんが(この設定でビルドされないことを意味します)私たちが確かにインターフェイスメソッドをオーバーライドするかどうかという哲学的な質問です。実際の目的でこの質問に深く関わっている必要はありません)

+0

それはトリックでした。まことにありがとうございます! – Lon

+0

多くのありがとうございます。私は借りて! – bhekman

0

AndroidはJava 5標準、そして(前の答えが言うように)Java 5は、Interfaceメソッドを実装するメソッドで@Overrideアノテーションをサポートしません。スーパークラスメソッドをオーバーライドするメソッドでのみです。

EclipseのJavaコンパイラ設定を1.6に設定すると、これを行うことができますが、私の個人的な意見は、コンパイラ設定を1.5に保つ(注釈を削除する)ことです。

私はそれが直接スタンドアロンのAndroidアプリケーションを作成するに接続されていないことを認識し、しかしAndroid source pageが明示的に述べている:12以上を更新し、

JDK 5.0。 @Overrideとの非互換性のため、Java 6はサポートされていません。

+0

コメントを評価してください。私はこの作業をする方法を理解しようとします。 – Lon

1

リスナーを輸入していることを確認し、他の輸入品を使用してファイルの先頭に

import android.view.View.OnTouchListener;