Правильный способ очистить настройки и заставить его использовать значения из файла XML? - PullRequest
2 голосов
/ 08 июня 2011

Итак, я занимался разработкой и изменил имена ключей (android: key) некоторых настроек, которые есть в моем файле settings.xml.Во время некоторого тестирования я понял, что старые настройки (старые ключи и значения) все еще были там, хотя в моем новом файле settings.xml их больше не было.

Я делал это, когда запускалось мое приложение:

 PreferenceManager.setDefaultValues(this, R.xml.settings, false);

Который не удаляет старые настройки, которых больше нет в моем файле настроек.

Затем попробовал это:

PreferenceManager.setDefaultValues(this, R.xml.settings, true);

И наконец это:

  PreferenceManager.getDefaultSharedPreferences(this).edit().clear();
  PreferenceManager.setDefaultValues(this, R.xml.settings, true);

Но старые ключи / значения все еще там.Хорошо, теперь я просто перезапустил эмулятор с проверкой «Очистить данные пользователя», так что я уверен, что все получится.Но как правильно сделать это, кроме этого?

Как правильно удалить старые настройки?

Ответы [ 5 ]

18 голосов
/ 08 июня 2011

После вашего последнего примера вы должны сделать коммит. Я бы порекомендовал разбить шаги, чтобы было легче читать.

SharedPreferences sharedPrefs = getDefaultSharedPreferences(this);
Editor editor = sharedPrefs.edit();
editor.clear();
editor.commit();
2 голосов
/ 11 сентября 2015

Вкратце и в полном объеме:

  private void prefSetDefaults()
  {
    SharedPreferences.Editor
        editor ;
        editor = PreferenceManager.getDefaultSharedPreferences(this).edit();
        editor.clear();
        editor.commit();
    PreferenceManager.setDefaultValues(this, R.xml.preferences, true); //true = xml default
  }

(где preferences.xml содержит предпочтения, каждое с определенным android:defaultValue).

2 голосов
/ 25 апреля 2013

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

SharedPreferences settings = getSharedPreferences("MyPreferences", 0);
            if(settings.contains("mykey")) {
                SharedPreferences.Editor editor = settings.edit();
                editor.remove("mykey");
                editor.commit();
            }
0 голосов
/ 08 июня 2011

Я заметил, что иногда некоторые вещи просто не обновляются корректно на эмуляторе / телефоне. Зайдите в настройки вашего телефона / эмулятора, удалите приложение. Переустановите приложение.

0 голосов
/ 08 июня 2011

Вы пробовали Editor.remove (клавиша String) на старых значениях, которые вы хотите удалить?

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