Я реализовал onSharedPreferenceChanged
в своей основной деятельности.
Если я изменю настройки в основной активности, мое событие срабатывает.
Если я изменил настройки на экране моих настроек (PreferenceActivity
), мое событие НЕ запускается при изменении настроек (поскольку это отдельное действие и отдельная ссылка на sharedPreferences?)
Есть ли у кого-нибудь рекомендация о том, как мне следует преодолевать эту ситуацию?
Спасибо!
EDIT1: Я попытался добавить обработчик событий прямо в свою активность, но он никогда не срабатывает. Следующий метод вызывается во время 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
}
});
}