back to top

Data Storage: Shared Preferences – Guida Sviluppo App Android

L’ultima metodologia utilizzabile per il salvataggio permanente dei dati che andremo a presentare in questa guida è quella relativa alle Shared Prefereces. Particolarità di questa metodologia è quella di possedere una struttura chiave/valore semplicissima da utilizzare.

Per fare un esempio sarà possibile settare una stringa mioNome per la chiave Nome e in un secondo momento sarà possibile recuperare il valore associato alla chiave Nome semplicemente cercandola all’interno delle Shared Preferences.

Questo tipo di metodologia di immagazzinamento dei dati in maniera premanente consiste in una via di mezzo tra i semplici file di testo e i più complessi database. Le considerazioni fatte per quanto riguarda le dimensioni dei dati da trattare sono simili a quelle fatte sui file di testo: anche in questo caso, se ci trovassimo a dover maneggiare insiemi di dati molto grandi, le Shared Preferences non risulterebbero essere la scelta migliore.

Un esempio tipico che ne viene fatto all’interno delle applicazioni è il salvataggio di preferenze da parte dell’utente come, per esempio, la lingua utilizzata oppure le preferenze relative all’audio.

Mostriamo adesso un esempio di utilizzo delle Shared Preferences all’interno di un’applicazione. Nel nostro codice andremo a modificare il contenuto di una TextView a seconda che sia stato salvato o meno un certo dato. Il codice di esempio è il seguente:

import android.widget.*;
import android.content.*;

public class provaSharedPreferences extends Activity {

  private LinearLayout layout;
  private TextView tv;
  
  /** Called when the activity is first created. */
  @Override
  
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    Button bottone = new Button(this);  
    layout = new LinearLayout(this); 
    layout.addView(bottone);
    layout.addView(tv);
    setContentView(layout);
    
    SharedPreferences settings = getSharedPreferences("PROVA", 0);
    String nome = settings.getString("nome", "Nessun valore inserito");
    tv.setText("risultato:"+ nome);

    bottone.setOnClickListener(new View.OnClickListener() {
            
      public void onClick(View view) { 
        SharedPreferences settings = getSharedPreferences("PROVA", 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.putString("nome","Matteo" );

        editor.commit();
        String nome = settings.getString("nome", "Nessun valore inserito");
        tv.setText("risultato:"+ nome);
      }
    });
    
  }
}

Andiamo adesso ad effettuare la consueta analisi del codice. Dopo aver dichiarato e creato view e layout, vediamo che viene dichiarato un oggetto di tipo SharedPreferences che viene inizializzato utilizzando il metodo getSharedPreferences. Quest’ultimo ritorna la Shared Preference indicata come primo parametro se quest’ultima esiste, altrimenti la crea e ritorna proprio questa Shared Preference appena creata.

Successivamente andiamo a recuperare il valore associato alla chiave nome utilizzando il metodo getString. Quest’ultimo ritorna il valore associato alla chiave indicata come primo parametro se la chiave esiste, in caso contrario ritorna il valore passatogli come secondo parametro.

All’interno del listener associato al bottone andiamo nuovamente a recuperare l’istanza delle Shared Preferences desiderata ed andiamo a creare un oggetto di tipo Editor, necessario per poter modificare i valori all’interno della Shared Preference per il quale è stato creato (ciò avviene con settings.edit()).

L’aggiornamento del valore per la chiave nome viene effettuato invocando il metodo putString sull’oggetto editor precedentemente creato. Come ultima cosa rendiamo permanenti le modifiche appena apportate invocando il metodo commit e poi andiamo ad inserire all’interno della TextView il nuovo valore per la chiave key.

Pubblicitร 

In questa guida...