2011-02-03 143 views
3

我想使用GPS獲取當前位置。無法覆蓋LocationListener類的方法

這是我的場景。我的類定義是:

public class UseGps extends Activity implements LocationListener 

,如果我嘗試重寫像LocationListener的方法,這

1)

@Override 
public void onLocationChanged(Location loc) 

2)

@Override 
public void onProviderDisabled(String provider) 

3)

@Override 
public void onProviderEnabled(String provider) 

它給我的編譯錯誤說

The method onStatusChanged(String, int, Bundle) of type UseGps must override a superclass method remove override.

同爲2),3)

這裏有什麼錯?

+0

Android SDK中2.2 – manju 2011-02-03 07:40:15

+0

哦抱歉..你能告訴我如何找出java的合規性水平,這我是using..my JDK版本jdk是-6u21-Windows的i586系統 – manju 2011-02-03 07:44:09

+0

我的猜測是,你的項目設置爲合規等級1.5。你應該把它設置爲1.6。 – 2011-02-03 07:46:38

回答

11

假設您正在使用Eclipse,請執行以下操作以確保您的合規性級別爲1.6。

轉至ProjectPropertiesJava Compiler。確保Compiler compliance level設置爲1.6

您應該通過導航至WindowPreferencesJavaCompiler將該級別設置爲默認值。爲Compiler compliance level選擇1.6

4

有人或許應該說明的是:

  1. @Override不支持接口,直到Java 1.6的。

  2. 在Java 1.5中,您不能在方法上使用@Override來指示它打算實現接口方法 - 編譯器會將其標記爲覆蓋錯誤。在Java 1.5下,您只能使用@Override來指示該方法正在重寫超類方法。

  3. 從Java 1.6開始,您可以使用@Override來指示該方法旨在實現接口方法(太糟糕了,它不是一個單獨的註釋,如@Implements)。

  4. Eclipse有一個功能,可以確保您的代碼能夠在特定版本的Java下編譯,而不管您安裝的是哪個Java實際版本 - 這是Compiler Compliance Level。如果它設置爲1.5,即使JDK爲1.6,編譯器也會標記任何不能在Java 1.5下編譯的代碼。