@Override ошибка аннотации (настройки Android) - PullRequest
19 голосов
/ 21 января 2011

Когда я пытался использовать этот код для включения настроек в моем приложении

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, то код не работает, и предупреждение говорит мне, что эта часть кода не используется локально.

Пробежав мимо кого-то и сбив с толку, мне стало интересно, не могли бы вы помочь?

Существуют ли распространенные сценарии, вызывающие эту ошибку?

Я думал, что это может быть мой проект настроен

Спасибо

Ответы [ 3 ]

49 голосов
/ 21 января 2011

Вы можете перейти в Настройки проекта -> Компилятор Java и переключить уровень соответствия компилятора на 1.6. Я должен делать это каждый раз, когда импортирую существующий проект.

18 голосов
/ 21 января 2011

Это вещь реализации. В Java 5 против Java 6 они изменили, можно ли использовать «Override» с интерфейсом (поскольку Override, похоже, подразумевает, что вы переопределяете какое-то поведение по умолчанию, которое вы не делаете с интерфейсом!) При желании вы можете выполнить поиск в настройках Eclipse и изменить его с ошибки компиляции на предупреждение компиляции. Ваш код внутри функции CheckBox () выглядит хорошо для меня.

Тем не менее, вы никогда не вызываете функцию CheckBox, поэтому возникает ошибка «не используется локально». Вы хотели вызвать эту функцию из метода OnPreferenceClick?

5 голосов
/ 31 мая 2011

просто хотел поделиться, Я написал пост, основываясь на информации, которую нашел здесь. Я надеюсь, что это полезно!

http://qtcstation.com/2011/05/android-and-jdk-compliance/

...