Android偏好设置已更改

时间:2011-07-30 16:18:59

标签: android sharedpreferences

我的活动中有一些偏好,我想实现这一点,根据这些偏好,将启动或不启动某些服务。 我正在尝试实现和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);

提前多多感谢!

1 个答案:

答案 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()方法?