19

当我尝试使用此代码在我的应用中启用首选项时

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 注释,则代码不起作用,并且警告告诉我该部分代码未在本地使用。

跑过某人并让他们感到困惑,我想知道您是否可以提供帮助?

是否有任何导致此错误的常见情况?

我想这可能是我的项目设置

谢谢

4

3 回答 3

49

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

于 2011-01-21T17:56:15.477 回答
18

这是一个执行的事情。在 Java 5 和 Java 6 中,他们改变了你是否可以对接口使用“覆盖”(因为覆盖似乎暗示你正在覆盖某种默认行为,而你没有对接口进行这种行为!)。如果您愿意,可以在 Eclipse 首选项中搜索并将其从编译错误更改为编译警告。您在 CheckBox() 函数中的代码对我来说看起来不错。

但是,您永远不会调用 CheckBox 函数,因此这就是“未在本地使用”错误的来源。您是否打算从 OnPreferenceClick 方法中调用该函数?

于 2011-01-21T17:45:07.243 回答
5

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

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

于 2011-05-31T19:39:25.757 回答