Подтвердить что ты не робот

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

Запустив это мимо кого-то и озадачив их, мне было интересно, можете ли вы помочь?

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

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

Спасибо

4b9b3361

Ответ 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/