我的活动中有一些偏好,我想实现这一点,根据这些偏好,将启动或不启动某些服务。
我正在尝试实现和onSharedPreferenceChanged
方法,但它永远不会被调用(即使我已将其分配给字段)。
代码如下:
public class MtprojectActivity extends Activity {
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
prefs = PreferenceManager.getDefaultSharedPreferences(this);
callsCheckbox = prefs.getBoolean("callsLogChk", true);
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
if (!started) {
startCallsService();
bindCallsService();
} else {
releaseCallsService();
stopCallsService();
}
}
};
prefs.registerOnSharedPreferenceChangeListener(listener);
提前多多感谢!
答案 0 :(得分:0)
你确定它没有被调用,或者仅仅是它没有按照你的期望行事吗?我可能错了,但不应该代码看起来像这样......
if (key.equals("callsLogChk")) {
if (!started) { // Check NOT started ???
startCallsService();
bindCallsService();
}
else { // The 'else' should compliment the check for !started ???
releaseCallsService();
stopCallsService();
}
}
很抱歉,因为我不知道你的代码我可能完全错了,但是当你发布它时,它看起来并不合适。
修改强>
另外,您是否确定在更改首选项时调用SharedPreferences.Editor.commit()
方法?