2014-10-31 16 views
30

Voglio salvare e recuperare alcune impostazioni dell'applicazione nel mio progetto Xamarin.Android.Come utilizzare SharedPreferences in Xamarin.Android?

So che in Android (java), utilizzo la classe SharedPreferences per memorizzare queste informazioni, ma non so come convertirlo in Xamarin C#.

Quando digito "SharedPreferences" nell'IDE di Xamarin Studio, non c'è il completamento automatico, quindi non so cosa usare.


Una ricerca iniziale dei interwebs mi ha portato a una questione connessa, ma contiene solo java Android:


Quindi, per riassumere:

  • Che cos'è l'equivalente Xamarin Android C# di di Android Java SharedPreferences?

risposta

49

L'equivalente Xamarin.Android di SharedPreferences è un'interfaccia denominata ISharedPreferences.

Utilizzarlo allo stesso modo e sarà possibile effettuare facilmente il porting del codice Android.


Ad esempio, per salvare un vero/falso bool utilizzando alcuni Context è possibile effettuare le seguenti operazioni:

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 

accesso valori salvati utilizzando:

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

Da questo esempio, puoi vedere che una volta che conosci l'interfaccia C# corretta da usare, il resto è facile. Esistono molti esempi java Android su come utilizzare SharedPreferences per situazioni più complesse e questi possono essere portati molto facilmente utilizzando ISharedPreferences.

Per ulteriori informazioni, leggere questa discussione:

17

È possibile utilizzare questo esempio per voi SharedPreferences in Xamarin.Android

In primo luogo, è necessario utilizzare:

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

È possibile creare un classe simile

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

Dall'attività.

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

Se si vuole risparmiare qualche valore:

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

Se si desidera ottenere il valore

string key = ap.getAccessKey(); 

Spero che questo esempio si aiuta

5

ho avuto problemi con l'uso PreferenceManager come mostra l'esempio. Ho aggiunto questo codice nella parte superiore e ora sto usando bene.

using Android.Preferences; 

Non so se è il modo corretto tho' ..

Plus per ottenere le preferenze si deve aggiungere il valore di default nel secondo parametro o non si compila

mInt = prefs.GetInt ("key_for_my_int_value", defaultInt); 
Problemi correlati