Как использовать SharedPreferences в Xamarin.Android?

Я хочу сохранить и получить некоторые настройки приложения в моем проекте Xamarin.Android.

Я знаю, что в Android (java) я использую class SharedPreferences для хранения этой информации, но я не знаю, как преобразовать ее в Xamarin C #.

Когда я ввожу «SharedPreferences» в IDE Xamarin Studio, автозавершения нет, поэтому я не знаю, что использовать.


Первоначальный поиск interwebs взял меня к связанному вопросу, но содержит только Android java:

  • Использовать общие настройки в xamarin

Итак, подведем итог:

  • Что такое Xamarin Android C # эквивалент SharedPreferences от Android Java?

4 Solutions collect form web for “Как использовать SharedPreferences в Xamarin.Android?”

Эквивалент SharedPreferences от SharedPreferences – это интерфейс ISharedPreferences .

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


Например, чтобы сохранить true / false bool с помощью некоторого Context вы можете сделать следующее:

 ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences (mContext); ISharedPreferencesEditor editor = prefs.Edit (); editor.PutBoolean ("key_for_my_bool_value", mBool); // editor.Commit(); // applies changes synchronously on older APIs editor.Apply(); // applies changes asynchronously on newer APIs 

Доступ к сохраненным значениям с использованием:

 ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences (mContext); mBool = prefs.GetBoolean ("key_for_my_bool_value", ); mInt = prefs.GetInt ("key_for_my_int_value", ); mString = prefs.GetString ("key_for_my_string_value", ); 

Из этого примера вы можете видеть, что, как только вы знаете правильный интерфейс C # для использования, остальное легко. Существует множество примеров Java java о том, как использовать SharedPreferences для более сложных ситуаций, и их можно легко портировать с помощью ISharedPreferences .

Для получения дополнительной информации прочитайте эту тему:

  • Android Shared Preference на форуме Xamarin

Вы можете использовать этот пример для SharedPreferences в Xamarin.Android

Во-первых, вам нужно использовать:

 ISharedPreferences //Interface for accessing and modifying preference data ISharedPreferencesEditor // Interface used for modifying values in a ISharedPreferences 

Вы можете создать аналогичный class

 public class AppPreferences { private ISharedPreferences mSharedPrefs; private ISharedPreferencesEditor mPrefsEditor; private Context mContext; private static String PREFERENCE_ACCESS_KEY = "PREFERENCE_ACCESS_KEY"; public AppPreferences (Context context) { this.mContext = context; mSharedPrefs = PreferenceManager.GetDefaultSharedPreferences(mContext); mPrefsEditor = mSharedPrefs.Edit (); } public void saveAccessKey(string key){ mPrefsEditor.PutString(PREFERENCE_ACCESS_KEY, key); mPrefsEditor.Commit(); } public string getAccessKey(){ return mSharedPrefs.GetString(PREFERENCE_ACCESS_KEY, ""); } } 

Из мероприятия.

 Context mContext = Android.App.Application.Context; AppPreferences ap = new AppPreferences (mContext); 

Если вы хотите сохранить некоторое значение:

 string key = "123123"; ap.saveAccessKey (key); 

Если вы хотите получить значение

 string key = ap.getAccessKey(); 

Надеюсь, этот пример поможет вам

У меня возникли проблемы с использованием PreferenceManager, как показывает пример. Я добавил этот код наверху, и теперь я хорошо его использую.

 using Android.Preferences; 

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

 mInt = prefs.GetInt ("key_for_my_int_value", defaultInt); 

Не уверен, что вы все еще не знаете или нет, но убедитесь, что вы удаляете свои переменные, если они находятся внутри функции:

 prefs.Dispose(); prefEditor.Dispose(); 

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

Interesting Posts

Возвращать результат по умолчанию для значения IN независимо

Пропуск VGA и виртуализация рабочих столов

Как перенаправить определенные приложения через VPN и другие, чтобы использовать мое «стандартное» соединение в OSX 10.6?

Сжигает ли DVD / CD медленнее, чтобы гарантировать, что у него не будет ошибок?

Должен ли доступ к переменной внутри одного classа через свойство?

Как связать несколько значений с одним текстовым блоком WPF?

Устранение неполадок Window7 .exe не открывается

Java: удаление всех строк DefaultTableModel

Инструменты для поиска узких мест в конфигурации оборудования

Странная проблема с памятью при загрузке изображения в объект Bitmap

Windows Spotlight Source и Save location?

Совместное использование единицы персистентности по компонентам в формате .ear

Обратный вызов jQuery при загрузке изображения (даже при кэшировании изображения)

ASP.NET 4.5 MVC 4 не работает в Windows Server 2008 IIS 7

Клавиатура Mac OS X перестала отвечать на

Давайте будем гением компьютера.