Search code examples
androidxamarinxamarin.android

How do I use SharedPreferences in Xamarin.Android?


I want to save and retrieve some application settings in my Xamarin.Android project.

I know that in Android (java), I use the class SharedPreferences to store this information, but I do not know how to convert that to Xamarin C#.

When I type "SharedPreferences" into the Xamarin Studio IDE, there is no auto-completion, so I don't know what to use.


An initial search of the interwebs took me to a related question, but only contains Android java:


So to summarise:

  • What is the Xamarin Android C# equivalent of Android Java's SharedPreferences?

Solution

  • The Xamarin.Android equivalent of SharedPreferences is an interface called ISharedPreferences.

    Use it in the same way, and you will be able to easily port Android code across.


    For example, to save a true/false bool using some Context you can do the following:

    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
    

    Access saved values using:

    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>);
    

    From this sample, you can see that once you know the correct C# interface to use, the rest is easy. There are many Android java examples on how to use SharedPreferences for more complex situations, and these can be ported very easily using ISharedPreferences.

    For more information, read this thread: