@Override를 사용하여 "수퍼 클래스 메서드를 재정의해야 함"이 표시되는 이유는 무엇입니까?
다음 코드는 public void onClick
줄 에이 오류 메시지를 생성합니다 .
이 라인에서 여러 마커
- 구현 android.view.View.OnClickListener.onClick
- 타입의 새로운 View.OnClickListener (방법 onclick을 (보기)) {} 슈퍼 클래스의 메소드를 오버라이드 (override) 할 필요
이유를 이해할 수 없습니다. 이 코드는 내가 본 수많은 예제에서 가져온 것입니다. 무엇이 잘못되었을 수 있습니까?
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 Compiler-> Compiler 준수 수준 이 1.6 으로 설정되어 있는지 확인합니다 .
이는 Java 1.5와 1.6 사이의 소스 코드 수준 비 호환성 때문일 가능성이 큽니다.
Java 5에서
@Override
주석은 메서드가 실제로 수퍼 클래스의 메서드를 재정의해야합니다.Java 6 이상에서는 메소드가 수퍼 클래스 또는 인터페이스에서 추상 메소드를 구현하는 경우
@Override
주석 도 충족됩니다.
따라서 작동 할 것으로 예상되는 코드에서 이것을 볼 수있는 가장 가능성있는 이유는 Java 5 컴파일러 (또는 컴파일러의 소스 준수 수준이 5로 설정된 다른 컴파일러)로 Java 6 (또는 그 이상) 코드를 컴파일하고 있기 때문입니다.
컴파일러를 1.6으로 설정했지만 여전히이 오류가 발생하면 Eclipse가 항상이 작업을 수행하기 때문에 가져 오기를 확인하십시오.
import android.content.DialogInterface.OnClickListener
대신->
import android.view.View.OnClickListener
그것은 내 문제를 해결합니다.
MAVEN 사용자 빌드에 Maven을 사용하는 경우 빌드 중에 이클립스 설정을 재정의 할 수 있습니다. 따라서 Eclipse를 1.7로 설정했지만 Maven JDK 빌드 버전 (이 작성 당시 기본값은 1.5)을 특별히 설정하지 않으면 이클립스 대상 컴파일러를 다시 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>
나에게 이것은 내가 재정의하려는 메서드가 패키지 비공개 이고 다른 패키지에서 재정의하려고 했기 때문에 발생 했습니다.
Eclipse는 추가로 다른 경고로 인해 눈치 채지 못한 경우 경고를 추가합니다.
이제 2018 년입니다! 쉽게 참조하려면 아래 스크린 샷을 참조하십시오.
Putting a View.onCLickListener()
solved the problem to me. My Java Compiler --> Compiler Compliance level is already set to 1.6 but still I was having the same problem.
But changing the code
rdBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
onRadioButtonClicked(v);
}
});
to
rdBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
onRadioButtonClicked(v);
}
});
solved the problem in my case.
'Program Tip' 카테고리의 다른 글
헤드폰이 연결되어 있습니까? (0) | 2020.11.22 |
---|---|
ScrollView 내의 이미지 그리드 (0) | 2020.11.22 |
다른 뷰 컨트롤러에서 뷰 컨트롤러를 하위 뷰로 추가 (0) | 2020.11.22 |
Eclipse에 오류가 표시되지만 찾을 수 없습니다. (0) | 2020.11.22 |
데이터베이스에 대한 CREATE 스크립트 내보내기 (0) | 2020.11.22 |