次のコードは、public void onClick
行。
この行の複数のマーカー
-Android.view.View.OnClickListener.onClickを実装します
-タイプnew View.OnClickListener(){}のメソッドonClick(View)は、スーパークラスメソッドをオーバーライドする必要があります
理由がわかりません。このコードは、私が見た多くの例から取られています。何が間違っている可能性がありますか?
private Button audioButton;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
audioButton = (Button) findViewById(R.id.imageButton1);
audioButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View button) {
if (button.isSelected()) {
button.setSelected(false);
}
else {
button.setSelected(true);
}
}
});
}
プロジェクトのプロパティを確認し、Javaコンパイラ->コンパイラ準拠レベルが1.6に設定されていることを確認します。
これは、おそらくJava 1.5と1.6の間のソースコードレベルの非互換性によるものです。
Java 5、@Override
アノテーションを使用するには、メソッドが実際にスーパークラスのメソッドをオーバーライドしている必要があります。
Java 6以降では、@Override
アノテーションは、メソッドがスーパークラスまたはインターフェースで抽象メソッドを実装している場合、alsoを満たします。
したがって、動作することが期待されるコードでこれを確認する最も可能性の高い理由は、Java 6(以降)のコードをJava 5コンパイラでコンパイルしていることです。 (または、コンパイラーのソース準拠レベルが5に設定されている他のコンパイラー)。
MAVEN USERSビルドにMavenを使用している場合、ビルド中にEclipse設定をオーバーライドできます。したがって、Eclipseを1.7に設定しても、Maven JDKビルドバージョン(この記事の執筆時点ではデフォルトで1.5)を特に設定しない場合、Eclipseターゲットコンパイラは1.5にリセットされます。 Mavenコンパイラーを次のように設定します。
<build>
...
<plugins>
....
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
コンパイラを1.6に設定してもこのエラーが発生する場合は、インポートを確認してください。Eclipseは常にこれを実行しようとするためです。
import Android.content.DialogInterface.OnClickListener
->の代わりに
import Android.view.View.OnClickListener
それは私の問題を解決します。
View.onCLickListener()
を追加することで問題は解決しました。 My Java Compiler-> Compiler Compliance levelはすでに1.6に設定されていますが、それでも同じ問題が発生していました。
しかし、コードを変更する
rdBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
onRadioButtonClicked(v);
}
});
に
rdBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
onRadioButtonClicked(v);
}
});
私の場合は問題を解決しました。
私にとってこれは、オーバーライドしたいメソッドがpackage privateであり、別のパッケージからオーバーライドしようとしたために発生しました。
その場合、Eclipseはさらに警告を出しますが、他の多くの警告のために私は気づきませんでした