さて、私はこの恐ろしいコードを Google のアンドロイドから実装し始めました。OnSharedPreferenceChangeListener が呼び出されていません。これは私のコードです。アドバイスをお願いできますか?
クラス定義:
private SharedPreferences sPrefs;
private PreferenceChangedListener prefsChangedListener;
私はプライベートな内部クラスを持っています:
private class PreferenceChangedListener implements
OnSharedPreferenceChangeListener {
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
if (key == "highThreshold") {
try {
highThreshold = Float.parseFloat(sharedPreferences
.getString(key, "0"));
} catch (Exception e) {
}
}
}
}
OnResume で次のコードを試し、「Voorkeuren」設定アクティビティが開始された後にリスナーを登録しようとしました。どちらも失敗します。
sPrefs = getPreferences(MODE_PRIVATE);
prefsChangedListener = new PreferenceChangedListener();
sPrefs.registerOnSharedPreferenceChangeListener(prefsChangedListener );
PreferenceActivity を拡張するクラス Voorkeuren を定義しました
public class Voorkeuren extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_voorkeuren, menu);
return true;
}
}
私は次のように開きます:
Intent intent = new Intent(getBaseContext(),Voorkeuren.class);
startActivity(intent);
クラスは正常に表示され、セッション間で値が保存されます。しかし、設定が変更された場合、私のアプリケーションはポーリングされるべきではありません。何か案は?SharedPreferences.Editor について赤い点がありますが、それがどのように関連しているかはわかりません。