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

「プロジェクト設定」->「Javaコンパイラー」に移動し、コンパイラーのコンプライアンス・レベルを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 に答える