Обновление значения флажка на экране настроек при изменении значения в SharedPreferences в Android - PullRequest
0 голосов
/ 05 декабря 2011


У меня есть приложение, которое использует местоположение пользователя. У меня есть диалоговое окно (рис. Ниже), запрашивающее у пользователя разрешение «Разрешить» или «Запретить» приложению использовать местоположение пользователя (диалоговое окно появляется, когда пользователи впервые открывают приложение после установки ИЛИ, когда пользователь пытается использовать службу на основе определения местоположения, пока с использованием местоположения пользователя - «Запретить» (пользователем).
dialog

Я также использую элемент предпочтения (флажок) (рис. Ниже) в PreferenceActivity, где пользователь может переключать свои предпочтения.
prefs item

Чтобы изменить значение разделяемой привилегии, я использую этот код

    <code>public void onClick(DialogInterface dialog, int id)
    {
        sharedPrefs =getSharedPreferences("prefs",MODE_WORLD_WRITEABLE);
        Editor editor = sharedPrefs.edit();
        editor.putBoolean("locationPermission", true);
        editor.commit();<br>
    }</code>

Я ожидал, что значение флажка будет изменяться автоматически в зависимости от выбора диалогового окна, так как ключ locationPermission содержит значение для флажка. Но это не так.

Теперь, как мне сопоставить выбор диалога (рис. 1) со значением флажка (рис. 2)?

Ответы [ 2 ]

4 голосов
/ 06 декабря 2011

Проблема была решена с помощью

<code>sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

вместо

<code>sharedPrefs = getSharedPreferences("prefs", MODE_WORLD_WRITEABLE);

1 голос
/ 05 декабря 2011

Вы можете позвонить addPreferencesFromResource в onCreate вашего PreferenceActivity, чтобы ваш пользовательский интерфейс заполнялся настройками. Кроме того, вы можете убедиться, что ваш CheckBoxPreference имеет android:persistent-"true" в своем определении XML.

...