Подтвердить что ты не робот

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

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

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

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


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


Итак, суммируем:

  • Что такое Xamarin Android С# эквивалент для Android Java SharedPreferences?
4b9b3361

Ответ 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);