2016-05-17 17 views
17

Come possiamo archiviare e recuperare le impostazioni dell'app come coppia chiave, valore in Xamarin.Forms? Come quando l'app è chiusa, possiamo memorizzare le preferenze dell'utente e al riavvio dell'App siamo in grado di ottenere quei valori.Come memorizzare le impostazioni delle app in Xamarin.Forms

+0

https://forums.xamarin.com/discussion/41680/application-current-properties-can-not-persist-in -android-using-xf-1-42 –

risposta

30

Ciò può essere fatto in questo modo anche usando Properties Dictionary

per l'archiviazione dei dati:

Application.Current.Properties ["id"] = someClass.ID; 

per i dati di recupero:

if (Application.Current.Properties.ContainsKey("id")) 
{ 
    var id = Application.Current.Properties ["id"] as int; 
    // do something with id 
} 

ref: https://developer.xamarin.com/guides/xamarin-forms/working-with/application-class/#Properties_Dictionary

+0

Si noti che non si dovrebbe usare questo per le impostazioni dell'utente. Queste proprietà sono serializzate su un file xml e non utilizzano il meccanismo delle impostazioni/preferenze native della piattaforma sottostante. Per esempio. in iOS non memorizza oggetti in NSUserDefaults. Non sarà possibile modificarlo dal pacchetto Impostazioni del sistema (https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/UserDefaults/Preferences/Preferences.html) – LanderV

+0

Application.Current.Le proprietà riguardano più il mantenimento dello stato dell'applicazione attraverso le attivazioni (OnStart/OnSleep/OnResume) – LanderV

0

L'oggetto Application (in VS si ottiene una classe App che ne eredita, penso che il modello di Xamarin Studio potrebbe essere leggermente diverso) ha un dizionario Properties specifico per questo. Se è necessario assicurarsi che le proprietà vengano salvate immediatamente, esiste un metodo Application.SavePropertiesAsync che è possibile chiamare.

4

Io uso Settings Plugin for Xamarin And Windows per Xamarin.Forms, al rialzo dal momento che questo è implementato a livello di dispositivo, è possibile accedere a queste impostazioni da qualsiasi progetto Forme, PCL biblioteca O il progetto originario all'interno della vostra app.

  • Nuget: Xam.Plugins.Settings

private const string UserNameKey = "username_key"; 
private static readonly string UserNameDefault = string.Empty; 

public static string UserName 
{ 
    get { return AppSettings.GetValueOrDefault<string>(UserNameKey, UserNameDefault); } 
    set { AppSettings.AddOrUpdateValue<string>(UserNameKey, value); } 
} 
+0

Che ne dici di akavache, hai usato quello? @SushiHangover –

+0

@AkashAmin Quasi tutte le mie app hanno attualmente 'Akavache' in esso (usarlo per il caching ma cercando di passare a Realm per la velocità e per rimuovere la dipendenza SQLite per i progetti futuri). Ma per la memorizzazione di alcune impostazioni dell'app, è piuttosto complicato ... – SushiHangover

+0

Grande. Anche io stavo cercando nel regno. Grazie per il tuo feedback però. –

Problemi correlati