私はonSharedPreferenceChanged
私の主な活動に実装しました。
メインアクティビティで設定を変更すると、イベントが発生します。
設定画面で設定を変更した場合(PreferenceActivity
)設定が変更されてもイベントは発生しません(これは、sharedPreferencesへの個別のアクティビティと個別の参照であるためですか?)
この状況を克服するために私がどのように取り組むべきかについて誰かがアドバイスを持っていますか?
ありがとう!
編集1:設定アクティビティにイベントハンドラーを追加しようとしましたが、起動しません。次のメソッドは、設定アクティビティのonCreate中に呼び出されます。値を変更しても、メッセージは出力されません(msg()
のラッパーですLog.d
)。
private void registerChangeListener () {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
sp.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener () {
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
msg (" ***** Shared Preference Update ***** ");
Intent i = new Intent();
i.putExtra("KEY", key);
i.setAction("com.gtosoft.dash.settingschanged");
sendBroadcast(i);
// TODO: fire off the event
}
});
}