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
?
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:
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
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);
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.