@Override ошибка аннотации (андроидальные префы)
Когда я пытался использовать этот код, чтобы включить настройки в моем приложении
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.Preference.OnPreferenceClickListener;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.Toast;
import android.widget.CompoundButton.OnCheckedChangeListener;
public class Preferences extends PreferenceActivity {
private RadioButton btn01;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
btn01 = (RadioButton)findViewById(R.id.RadioButton01);
Preference customPref = (Preference) findPreference("customPref");
customPref.setOnPreferenceClickListener(new OnPreferenceClickListener(){
public boolean onPreferenceClick(Preference preference) {
Toast.makeText(getBaseContext(),"The Custom Preference Has Been Clicked",Toast.LENGTH_LONG).show();
SharedPreferences customSharedPreference = getSharedPreferences("myCutomSharedPrefs", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = customSharedPreference.edit();
editor.putString("myCustomPref","The preference has been clicked");
editor.commit();
return true;
}
public void CheckBox() {
final CheckBox ThisCheckBox = (CheckBox) findViewById (R.id.checkboxPref);
ThisCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton compoundButton,boolean test) {
if (ThisCheckBox.isChecked()){
btn01.setVisibility(0);
} else {
btn01.setVisibility(2);
}
}
});
};
});
}
}
В этой строке генерируется ошибка
public void onCheckedChanged(CompoundButton compoundButton,boolean test) {
говоря:
Multiple markers at this line
- The method onCheckedChanged(CompoundButton, boolean) of type new
CompoundButton.OnCheckedChangeListener(){} must override a superclass method
- implements
android.widget.CompoundButton.OnCheckedChangeListener.onCheckedChanged
Если я удаляю аннотацию @Override, тогда код не работает, и предупреждение сообщает мне, что эта часть кода не используется локально.
Запустив это мимо кого-то и озадачив их, мне было интересно, можете ли вы помочь?
Существуют ли какие-либо распространенные сценарии, вызывающие эту ошибку?
Я думал, что это может быть мой проект настроен
Спасибо
Ответы
Ответ 1
Это вещь реализации. В Java 5 vs Java 6 они изменили, можете ли вы использовать "Override" с интерфейсом (поскольку Override, по-видимому, подразумевает, что вы переопределяете какое-то поведение по умолчанию, которое вы не делаете с интерфейсом!). Если вы этого желаете, вы можете выполнить поиск в настройках Eclipse и изменить его из ошибки компиляции в предупреждение компиляции. Вы код внутри функции CheckBox() отлично смотрятся на меня.
Однако вы никогда не вызываете функцию CheckBox, так что откуда приходит ошибка "не используется локально". Вы имели в виду вызов этой функции из метода OnPreferenceClick?
Ответ 2
Вы можете перейти к настройкам проекта → Компилятор Java и переключить уровень соответствия компилятора на 1.6. Я должен делать это каждый раз, когда я импортирую существующий проект.
Ответ 3
просто хотел поделиться,
Я написал сообщение, основанное на информации, которую я нашел здесь. Я надеюсь, что это будет полезно!
http://qtcstation.com/2011/05/android-and-jdk-compliance/