Настройки не сохраняются в DialogPreference - PullRequest
0 голосов
/ 16 марта 2010

Моя проблема заключается в следующем: у меня есть компонент, который расширяет DialogPreference. Если я изменю связанные предпочтения извне интерфейса ...

SharedPreferences.Editor ed= sharedPreferences.Edit();
ed.putInteger("Setting",aValue);
ed.commit();

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

Кто-нибудь знает, что может быть причиной этого?

1 Ответ

0 голосов
/ 17 мая 2014

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

Некоторые идеи о вещах, которые могут вызывать проблему:

  • «SharedPreferences», в который вы записываете свое значение, может отличаться от того, с которого вы читаете. Вы можете проверить это, получив значение из SharedPreferences и распечатав его (в журнале или через тост) сразу после вызова commit () в диалоговом окне. Если вы видите измененную переменную, вы, возможно, фактически открываете новую «SharedPreferences» в диалоговом окне вместо того, которое вы используете в вызывающем действии, или

  • Возможно, вы переписываете значение по умолчанию снова после вашего диалога. Например, IF onResume () или другая функция вызывается сразу после закрытия диалога, и если там записано значение по умолчанию. Я думаю, что это маловероятно, но может быть что-то еще, чтобы рассмотреть, если вы уверены, что пишете правильные «SharedPreferences».

  • Функция, которую вы используете, когда пишете переменную, может быть неправильной .... Мне не ясно, как это могло бы остаться незамеченным компилятором или нет, иначе, как я вижу в документации для SharedPreferences.Editor, функция для записи целочисленного значения может быть putInt (ключ String, значение int) вместо putInteger (ключ String, значение int).

  • Возможно, вы читаете или пишете не ту переменную .... Это может произойти, если вы вставили команду putInt с копированием и оставили неправильный ключ или неправильное значение. Это та ошибка, которая долгое время не обнаруживается, но это ... Я думаю, это происходит. Ошибка с аналогичным эффектом - опечатка на клавише (две разные клавиши для чтения и записи).

    Без реального кода, я думаю, я не могу предложить больше ничего ... Но я надеюсь, что это может как-то помочь любому, кто придет к этому вопросу.

    Привет.

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