我已经在我的主要活动中实现了 onSharedPreferenceChanged
。
如果更改主活动中的首选项,则会触发事件。
如果我通过我的首选项屏幕(PreferenceActivity
)更改首选项,我的事件不会在首选项更改时触发(因为它是一个单独的活动和对共享首选项的单独引用?)
有没有人对我该如何克服这种情况有什么建议?
谢谢!
编辑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
}
});
}