Странное поведение для ListPreferences - PullRequest
0 голосов
/ 02 апреля 2010

Вот проблема, с которой я сталкиваюсь: в моем приложении у меня есть несколько предпочтений, хранящихся в sharedPreferences, которые записывают различные настройки приложения. Это некоторые строки. Поскольку я хочу, чтобы приложение запускалось с некоторыми значениями по умолчанию для этих параметров, в onCreate я создаю объект «Настройка» для каждого параметра, в котором я проверяю, имеет ли значение sharedPreference значение NULL, и если это так, я помещаю значение по умолчанию в sharedPreference.

Setting(int setting, String default)
{
    storedPref=sharedPref.getString(getText(setting),null);
    if(storedPref==null)
    {
      SharedPreferences.Editor edit=sharedPred.edit()
      edit.putString(getText(setting),default);
      edit.comit
    }
}

Представления, связанные с этими настройками, являются ListPreferences (). При первом открытии приложения предполагается, что они отображают список параметров, в которых выбранный вариант является значением по умолчанию, но иногда бывает, что не выбран ни один параметр, даже параметр по умолчанию, который не предназначен.

ListPreferences создаются в xml путем установки массива для «тега records» и «тега values». Я не совсем уверен, что я должен передать конструктору объекта Setting по умолчанию, члену массива entry или что-то из значений one !!! Если я передам элемент записей, некоторые из них будут иметь ожидаемое поведение Listpreferences, а некоторые будут иметь описанные выше. Если я сделаю иначе и передам что-то из массива значений, произойдет то же самое! У кого-нибудь есть идеи, почему это странное поведение?

Ответы [ 2 ]

1 голос
/ 02 апреля 2010

Вы должны проверить файл настроек и признать, что ключ и формат используются нашей ListPreference, затем вы используете ту же пару значений ключа в вашей SharedPreferences.Editor

вы найдете ваши prefs файлы в следующей папке

/data/data/com.your.package/shared_prefs/

вы попадаете в консоль:

adb shell
cd /data/data/com.your.package/shared_prefs/
ls
0 голосов
/ 02 апреля 2010

Так как второй параметр SharedPreferences.getString () является значением по умолчанию, которое будет возвращено, если ключ отсутствует, вы также можете легко написать

Setting(int setting, String default)
{
  storedPref=sharedPref.getString(getText(setting),default);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...