2011-02-03 17 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) 

ここで間違っている何のために2と同じ

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

を言って私にコンパイルエラーを与える)と3)

されますか?

+0

アンドロイドSDKは2.2 – manju

+0

ああ申し訳ありません..あなたはどのように私はusing..my JDKのバージョン午前のJava準拠レベルを見つけるためにされているJDK-6u21-窓-i586の – manju

+0

を教えてくださいすることができます私の推測では、ということです、あなたのプロジェクトは準拠レベル1.5に設定されています。 1.6に設定する必要があります。 –

答えて

11

Eclipseを使用していると仮定して、準拠レベルが1.6であることを確認するには、次のようにします。

Project - >Properties - >Java Compilerにアクセスしてください。 Compiler compliance level1.6に設定されていることを確認してください。 >Preferences - - >Java - >Compiler

あなたはWindowに移動して、デフォルト値として、そのレベルを設定する必要があります。 Compiler compliance levelの場合は1.6を選択してください。

+0

おかげで.... – manju

4

誰かが、おそらくそれを説明する必要があります:

  1. @Overrideは、Java 1.6までのインターフェイスではサポートされていませんでした。

  2. Java 1.5では、インターフェイスメソッドを実装することを示すためにメソッドには@Overrideを使用できません。コンパイラはそれをオーバーライドエラーとしてフラグを立てます。 Java 1.5では、@Overrideを使用して、メソッドがスーパークラスメソッドをオーバーライドしていることを示すことができます。

  3. Java 1.6からは、@Overrideを使用して、メソッドがインタフェースメソッドを実装することを示していることができます(あまりにも悪いのは、@Implementsのような別個の注釈ではありません)。

  4. Eclipseには、インストールしたJavaの実際のバージョン(これはCompiler Compliance Level)に関係なく、特定のバージョンのJavaでコードをコンパイルできるようにする機能があります。 1.5に設定すると、JDKが1.6であっても、コンパイラはJava 1.5でコンパイルされないコードにフラグを付けます。

+0

多分私はそれを自分で説明していたはずです。説明を追加していただきありがとうございます。 –

関連する問題