2011-06-19 3 views
0

私はAndroidアプリケーションを作成しており、いくつかのボタンがあります。 リスナーを追加したいので、android.view.View.OnClickListenerを実装し、リスナーをボタンに追加しました。コンパイラにonClickをオーバーライドするように指示できないのはなぜですか

しかし、onClick方法で、私はこのようなOverride注釈を追加することはできません。

@Override 
public void onClick(View view) { /* With Override */ } 

をしかし、これは動作します:

public void onClick(View view) { /* Without Override */ } 

そして、私は後者で何かをログに記録しようとした場合onClickメソッドは、意図したとおりに動作します。

私はEclipseを使用しており、スーパークラスメソッドをオーバーライドする必要があることを私に伝え続けます。

オーバーライドすると、なぜOverrideアノテーションを追加できないのですか?

私はUbuntu 11.4を使用しています。 java -versionリターン:

import android.view.View.OnClickListener; 

public class Main extends Activity implements OnClickListener { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 

     Button btnFoo = (Button) findViewById(R.id.btnFoo); 
     btnFoo.setOnClickListener(this); 
    } 

    // @Override 
    public void onClick(View v) { 
     Log.e("foo", "bar"); 
    } 
} 

PS:

java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)

ここでは、コードです。私は、Sun JDK 1.6

EDITを使用しています:

私はpublic void run()Runnableから)例えば、これは私が使用しようとしている方法のほとんどに適用されることがわかりました。

+0

なぜ*追加できませんか?あなたがそれをするなら、問題は何ですか? – Pit

+0

私が書きましたように:*私はEclipseを使用しており、スーパークラスメソッドをオーバーライドする必要があることを私に伝え続けます。* – whirlwin

+0

ああ、すみません。私はあなたを間違って理解した。 – Pit

答えて

0

java sdkのバージョンを1.6に変更しようとすると修正されます

2

オーバーライドするものがないため、既にそのメソッドの定義があるスーパークラスからサブクラス化しないインターフェイスを実装しています。 それは単に意味をなさない。

+6

インタフェースで@Overrideアノテーションを適用すると、Java 1.6でも動作するはずです。 「私は別の方法と同じ署名を使用しようとしています。私が正しくそれをやっていることを確認してください」という言葉で同じ目的を果たします。 –

+0

私が前に作ったAndroidアプリケーションを振り返ってみると、質問に記載されている注釈を使用していたので、明らかにJon氏が説明したように可能です。 – whirlwin