Imaginsystems


Tecniche di Programmazione - Codici Sorgenti - News Informatiche
Archivio Posts
Anno 2014

Anno 2013

Anno 2012
Statistiche
  • Views Home Page: 73.755
  • Views Posts: 551.314
  • Views Gallerie: 0
  • n° Posts: 210
  • n° Commenti: 224

ANDROID - SHARED PREFERENCES: UN MODO SEMPLICE PER SALVARE LE OPZIONI

ANDROID -  SHARED PREFERENCES: UN MODO SEMPLICE PER SALVARE LE OPZIONI

 

Come funziona SharedPreferences

La classe SharedPreferences fornisce un framework che ci permette di memorizzare una map di coppie chiave-valore. In particolare la chiave della coppia è sempre una String mentre il valore può essere un tipo primitivo booleanintfloatlong o un oggetto di tipo String. I valori sono memorizzati fisicamente in un file xml e sono disponibili anche dopo un riavvio dell’applicazione o del telefono.

All’interno di una Activity un oggetto SharedPreferences può essere creato richiamando semplicemente il metodo getPreferences, il parametro passato indica se il corrispondente file xml deve essere privato o leggibile anche dalle altre applicazioni installate sul device.

1
SharedPreferences prefs = getPreferences(MODE_PRIVATE);

Usando il metodo getPreferences di Activity i valori memorizzati sono privati e disponibili solo dall’Activity. Se vogliamo creare un oggetto SharedPreferences utilizzabile in più Activity all’interno dell’applicazione possiamo usare il metodo statico getDefaultSharedPreferences della classe PreferenceManager:

1
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

Lettura di un valore

Per ricavare il valore associato a una chiave deve essere usato un metodo diverso in base al tipo del valore, esistono i metodi getBooleangetIntgetFloatgetLong e getString che hanno come parametri una stringa contenente la chiave e il valore di default da ritornare nel caso in cui la chiave non sia presente. Esiste anche un metodo getAll che ritorna una Map con tutte le coppie presenti.

Per esempio per leggere un boolean associato a una chiave potremmo usare il metodo getBoolean in questo modo:

1
2
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
boolean primoAvvio = prefs.getBoolean(PRIMO_AVVIO, true);

Memorizzazione di un valore

Per memorizzare un valore è invece necessario richiamare il metodo edit di SharedPreferences. Questo metodo ritorna un oggetto Editor che permette di salvare valori usando i metodi putBooleanputInt,putFloatputLong e putString. Dopo aver richiamato uno o più di questi metodi dovrà essere richiamato anche il metodo commit, in caso contrario i valori non verranno effettivamente salvati.

Vediamo un semplice esempio che usa un oggetto SharedPreferences per memorizzare un boolean che indica se l’applicazione è già stata avviata altre volte. Nel caso in cui sia il primo avvio viene mostrato a video un messaggio usando la classe Toast:

1
2
3
4
5
6
7
8
9
10
11
12
private void mostraToastPrimoAvvio()
{
	SharedPreferences prefs = getPreferences(MODE_PRIVATE);
	if (prefs.getBoolean(PRIMO_AVVIO, true))
	{
		Toast.makeText(this, R.string.primo_avvio, 
			Toast.LENGTH_LONG).show();
		Editor prefsEditor = prefs.edit();
		prefsEditor.putBoolean(PRIMO_AVVIO, false);
		prefsEditor.commit();
	}
}

Conclusioni

Come vedete niente di complesso. Il risultato finale è questo, ovviamente lanciando una seconda volta l’applicazione il messaggio “Primo avvio” non verrà visualizzato:

By ImaginSystems & Queen Gin   

Categoria: ANDROID
lunedì, 24 feb 2014 Ore. 15.29
Ora e Data
Mappa
Blogs Amici
    Copyright © 2002-2007 - Blogs 2.0
    dotNetHell.it | Home Page Blogs
    ASP.NET 2.0 Windows 2003