Настройки Android изменены - PullRequest
0 голосов
/ 30 июля 2011

У меня есть некоторые предпочтения в моей деятельности, и я хотел бы добиться того, чтобы в зависимости от этих предпочтений некоторые службы были запущены или нет.Я пытаюсь реализовать метод 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 голосов
/ 30 июля 2011

Вы уверены, что он не вызывается или это просто случай, когда он не выполняет то, что вы ожидаете? Я могу ошибаться, но код не должен выглядеть так ...

if (key.equals("callsLogChk")) {
    if (!started) { // Check NOT started ???
        startCallsService();
        bindCallsService();
    }
    else { // The 'else' should compliment the check for !started ???
        releaseCallsService();
        stopCallsService();
    }
}

Извините, поскольку я не знаю ваш код, я могу быть совершенно не прав, но, поскольку вы его опубликовали, он мне не совсем подходит.

EDIT:

Кроме того, вы обязательно вызываете метод SharedPreferences.Editor.commit(), когда вносите изменения в предпочтения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...