我已经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
}
});
}