Comment utiliser SharedPreferences en Xamarin.Android?

je veux enregistrer et récupérer quelques paramètres d'application dans mon Xamarin.Projet Android.

je sais que dans Android (java), j'utilise la classe SharedPreferences pour stocker cette information, mais je ne sais pas comment la convertir en Xamarin C#.

quand je tape "SharedPreferences" dans L'IDE de Xamarin Studio, il n'y a pas d'auto-complétion, donc je ne sais pas quoi utiliser.


une recherche initiale du interwebs m'a amené à une question connexe, mais ne contient que Java Android:


en résumé:

  • Qu'est-ce que le Xamarin Android c# equivalent D'Android Java SharedPreferences ?
34
demandé sur Community 2014-10-31 09:12:09

4 réponses

Le Xamarin.L'équivalent Android de SharedPreferences est une interface appelée ISharedPreferences .

utilisez - le de la même manière, et vous pourrez facilement transférer le code Android à travers.


par exemple, pour enregistrer un vrai / faux bool en utilisant certains Context vous pouvez faire ce qui suit:

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

accéder aux valeurs sauvegardées en utilisant:

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

de cet échantillon, vous pouvez voir qu'une fois que vous connaissez la bonne interface C# à utiliser, le reste est facile. Il existe de nombreux exemples de java Android sur la façon d'utiliser SharedPreferences pour des situations plus complexes, et ceux-ci peuvent être portés très facilement en utilisant ISharedPreferences .

pour plus d'information, lire ce fil:

58
répondu Richard Le Mesurier 2016-09-10 17:10:58

vous pouvez utiliser cet exemple pour vous SharedPreferences en Xamarin.Android

Premièrement, vous devez utiliser:

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

vous pouvez créer une classe similaire

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, "");
    }
}

de L'activité.

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

si vous voulez économiser une valeur:

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

si vous voulez obtenir une valeur""

string key = ap.getAccessKey();

j'espère que cet exemple vous aidera

21
répondu Miguel Rodríguez 2015-10-29 05:40:49

j'ai eu du mal à utiliser PreferenceManager comme le montre l'exemple. J'ai ajouté ce code en haut et maintenant je peux l'utiliser.

using Android.Preferences;

Plus pour obtenir les préférences, vous devez ajouter la valeur par défaut comme second paramètre ou il ne compilera pas

mInt = prefs.GetInt ("key_for_my_int_value", defaultInt);
6
répondu Yohan Dahmani 2018-03-23 08:45:11

pas sûr si vous ne savez toujours pas ou pas, mais assurez-vous que vous disposez vos variables si elles sont à l'intérieur d'une fonction:

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

j'ai eu un crash/gel sur mon application pendant un certain temps en raison de ne pas disposer la mémoire chaque fois qu'il n'est plus nécessaire.

0
répondu Nevaran 2018-07-23 09:19:50