【发布时间】:2011-04-17 11:25:02
【问题描述】:
我在我的主要活动中实现了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
}
});
}
【问题讨论】: