@Override注释错误(android prefs)

Jac*_*ack 19 android overriding annotations 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);
                    }
                }
            });
        };
    });
}
}
Run Code Online (Sandbox Code Playgroud)

此行生成错误

 public void onCheckedChanged(CompoundButton compoundButton,boolean test) {
Run Code Online (Sandbox Code Playgroud)

他说:

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 
Run Code Online (Sandbox Code Playgroud)

如果我删除@Override注释,则代码不起作用,并且警告告诉我代码的那一部分未在本地使用.

经过这个过去,有人困惑他们,我想知道你是否可以提供帮助?

是否存在导致此错误的常见方案?

我认为这可能是我的项目设置

谢谢

小智 49

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


Ham*_*amy 18

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

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

  • 只需在YourProject-> RightClick-> Properties-> Java Compiler-> 1.5中将1.5到1.6修改为1.6.应用和是重建. (4认同)

Nel*_*rez 5

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

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