2011-11-13 67 views
1

我使用下面的代碼來實現Android應用程序中的多點觸摸捏。我在網上看到了幾次這樣的代碼示例,所以我不明白Eclipse會不斷給我一個「」Touch類型的onTouch(View,MotionEvent)方法必須覆蓋超類方法「這裏的錯誤消息,不會讓我執行代碼。構建目標是Android 2.1,圖像資源存在,清單文件看起來不錯等。onTouch覆蓋 - 在Eclipse中的錯誤消息

有沒有人有一個想法,爲什麼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

嘗試更改項目|屬性| JavaCompiler爲1.6。在1.6之前,它不允許在接口方法上使用@Overrides。 (我認爲你可以安全地使用1.6級btw,Java 1.6可能不支持構建Android源代碼(這意味着它不會用這個設置構建),但對於構​​建應用程序,它工作正常,我從來沒有當然,這是一個哲學問題,我們是否確實@Override接口方法,我們不需要深入研究這個問題的實際用途)

+0

這個技巧。萬分感謝! – Lon

+0

非常感謝;我欠你! – bhekman

0

Android從一開始就建立在Java 5標準之上,並且(如前面的答案所述)Java 5不支持在實現接口方法的方法上使用@Override註釋,而僅支持覆蓋超類方法的方法。

將Eclipse中的Java編譯器設置設置爲1.6時,您可以執行此操作,但我個人認爲將編譯器設置保留(或設置)爲1.5,並且刪除註釋是一種方法。

我認識到,它不是直接連接到編寫獨立Android應用程序,但Android source page明確地說:

JDK 5.0,更新12或更高。由於與@Override不兼容,Java 6不受支持。

+0

欣賞評論。我會試着弄清楚如何使這項工作。 – Lon

1

確保您導入的聽衆,

import android.view.View.OnTouchListener; 

在與其他進口文件的頂部。