Как использовать SharedPreferences в Xamarin.Android?
Я хочу сохранить и загрузить некоторые параметры приложения в моем проекте Xamarin.Android.
Я знаю, что в Android (java) я использую класс SharedPreferences
для хранения этой информации, но я не знаю, как преобразовать ее в Xamarin С#.
Когда я ввожу "SharedPreferences" в IDE Xamarin Studio, автозавершения нет, поэтому я не знаю, что использовать.
Первоначальный поиск interwebs взял меня к связанному вопросу, но содержит только Android java:
Итак, суммируем:
- Что такое Xamarin Android С# эквивалент для Android Java
SharedPreferences
?
Ответы
Ответ 1
Атрибут Xalarin.Android 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", <default value>);
mInt = prefs.GetInt ("key_for_my_int_value", <default value>);
mString = prefs.GetString ("key_for_my_string_value", <default value>);
Из этого примера вы можете видеть, что, как только вы знаете правильный интерфейс С# для использования, остальное легко. Существует множество примеров Java java о том, как использовать SharedPreferences
для более сложных ситуаций, и их можно легко переносить с помощью ISharedPreferences
.
Для получения дополнительной информации прочитайте эту тему:
Ответ 2
Вы можете использовать этот пример для SharedPreferences в Xamarin.Android
Во-первых, вам нужно использовать:
ISharedPreferences //Interface for accessing and modifying preference data
ISharedPreferencesEditor // Interface used for modifying values in a ISharedPreferences
Вы можете создать аналогичный класс
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();
Я надеюсь, что этот пример поможет вам
Ответ 3
У меня возникли проблемы с использованием PreferenceManager, как показывает пример. Я добавил этот код наверху, и теперь я хорошо его использую.
using Android.Preferences;
Не уверен, что это правильно.
Плюс, чтобы получить настройки, вам нужно добавить значение по умолчанию в качестве второго параметра или он не будет компилировать
mInt = prefs.GetInt ("key_for_my_int_value", defaultInt);