2014-02-17 3 views
1

Я пытаюсь сохранить строку в общих настройках. То, как я пытался сделать это следующим образом:SharedPreferences неправильно сохраняет значения

ISharedPreferences _prefs = PreferenceManager.GetDefaultSharedPreferences(this); 
ISharedPreferencesEditor _editor = _prefs.Edit(); 
_editor.PutString("myString", "123"); 
_editor.Commit(); 

Дальше я пытаюсь напечатать мою строку:

_txtView.Text = _prefs.GetString("myString", "Can't find string"); 

При запуске приложения мой TextView теперь правильно печатает «123 ». Так что все работает по назначению. Однако; точка sharedpreferences заключается в том, что она постоянна. Так что, если я сейчас попробую прокомментировать следующие две строки:

_editor.PutString("myString", "123"); 
_editor.Commit(); 

Затем построить снова, мои TextView дисплеи «не может найти строку». Так почему-то строка не сохраняется? Кто-нибудь видит, почему это?

Спасибо!

+0

Просто обратите внимание, что вы используете синхронный метод 'Commit()' без проверки возвращаемого значения boolean (fail/success). Вы должны использовать асинхронный метод 'Apply()' для повышения производительности;) – DerpyNerd

ответ

0

Однако точка sharedpreferences является то, что он настойчив: Это повторяется между приложением казнями. Когда вы закомментируете код и снова запустите, вы создаете новое приложение, не имеющее настроек по умолчанию. Вот почему он не работает, когда вы прокомментируете это.

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

+0

Так оно и было. Я разрабатываю некоторые для телефона Windows8, где это работает по-другому. Насколько мне известно, в sharedpreferences сохраняется полная перестройка (хранится в системном файле). Спасибо тебе за это. – Ajaco

+0

Рад помочь :) – SoulRayder

5

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

Для сохранения данных, необходимо обновить параметр:

  • В Xamarin Studio, выберите Сервис> Параметры> Проекты> Android ... Check "Preserve данных/кэша между приложением развертывает"

  • В Visual Studio, выберите Сервис> параметры> Xamarin> Android Настройки ... Проверка "Сохранять данные/кэш между приложением развертывает"

После того, как вы сделаете это, любые общие настройки или файлы данных, созданные в локальной папке приложения, будут оставаться.

Смежные вопросы