@Override注释错误(android prefs)

时间:2011-01-21 17:30:57

标签: android annotations override android-preferences

当我尝试使用此代码在我的应用中启用偏好设置时

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 个答案:

答案 0 :(得分:49)

您可以转到项目设置 - > Java编译器,并将编译器合规性级别切换为1.6。每次导入现有项目时我都必须这样做。

答案 1 :(得分:18)

这是一个实现的事情。在Java 5 vs Java 6中,他们改变了你是否可以在接口上使用“覆盖”(因为Override似乎意味着你要覆盖某种默认行为,而你没有使用接口!)。如果您愿意,可以在Eclipse首选项中进行搜索,并将其从编译错误更改为编译警告。你在CheckBox()函数里面的代码看起来很好。

但是,您永远不会调用CheckBox函数,因此“本地未使用”错误来自于此。你是否想在OnPreferenceClick方法中调用该函数?

答案 2 :(得分:5)

只是想分享, 我根据我在这里找到的信息写了一篇文章。我希望它有用!

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