Как использовать 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

Неплохо ли использовать отрицательные поля в Android?

В ClearCase, как я могу просмотреть старую версию файла в статическом представлении из командной строки?

Можно ли разделить одну линию Ethernet, выходящую из моей стены, на несколько отдельных линий?

LinqPad – преобразование SQL в команду Linq

Лучшая практика для определения событий кнопки в android

Окно BSOD: «INACCESSIBLE_BOOT_DEVICE» после перераспределения и установки Ubuntu Gnome

Цепочки загрузчиков для необычной настройки

Итерации через HashMap

Spring HandlerInterceptor vs Servlet Filters

Можно ли назначить объект базового classа ссылке на производный class с явным приведением типов?

Включить совместное использование файлов в Windows Vista

«WAN: отключено» при подключении маршрутизатора к кабельному модему

excel VBA автоматически запускает макрос всякий раз, когда изменяется ячейка

Лучшая практика получения EntityManagerFactory

Как передать значения с одной страницы на другую в jQuery

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