2013-04-24 10 views
26

Sto provando per l'ultima ora per salvare un numero intero nella mia applicazione Android. Ho letto che questo può essere fatto usando SharedPreferences. Tuttavia non capisco perché sembra così confuso farlo.SharedPreferences Android, come salvare una semplice variabile int

Come posso semplicemente salvare una variabile int? E poi quando eseguo nuovamente l'applicazione, come posso interagire con questa variabile di nuovo?

+0

Un ** approccio semplificato ** sarebbe utilizzando questa libreria: http://github.com/viralypatel/Android -SharedPreferences-Helper ... dettagli tecnici estesi nel mio [rispondi qui] (http://stackoverflow.com/a/35232248/1957401) ... – AndroidMechanic

+0

Controlla questo http://www.gadgetsaint.com/go/ xb023 – ASP

risposta

50
SharedPreferences sp = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE); 
SharedPreferences.Editor editor = sp.edit(); 
editor.putInt("your_int_key", yourIntValue); 
editor.commit(); 

la si può ottenere come:

SharedPreferences sp = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE); 
int myIntValue = sp.getInt("your_int_key", -1); 

L'interfaccia SharedPreference dà accesso al un file xml, e un modo semplice per modificarlo attraverso il suo editore. Il file è memorizzato in /data/data/com.your.package/shared_prefs/ ed è possibile accedervi tramite questa API SharedPreference

+2

hmm puoi inserire alcuni commenti per capire che cosa sta succedendo lì, perché non capisco l'esempio? Qual è la variabile? Cosa è "your_prefs". Qual è lo 0 accanto ad esso. Che cos'è "your_int_key" – donparalias

+1

In realtà, è anche necessario fornire un valore predefinito a 'getInt' che viene restituito quando non è possibile trovare un' int' con la chiave 'your_int_key'. Qualcosa del genere: 'int myIntValue = sp.getInt (" your_int_key ", -1);' dove -1 è il valore predefinito. – zbr

+2

Immagino che 'clearNotificationsSP' nel primo esempio dovrebbe essere solo' sp', giusto? – Scorchio

6

Questo è l'esempio dell'impostazione delle preferenze booleane. Puoi andare anche con Intero.

SharedPreferences prefs = PreferenceManager 
        .getDefaultSharedPreferences(this); 
      if (!prefs.getBoolean("firstTime", false)) { 

       SharedPreferences.Editor editor = prefs.edit(); 
       editor.putBoolean("firstTime", true); 
       editor.commit(); 
      } 

Spero che questo possa essere utile.

10
public void SaveInt(String key, int value){ 
     sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putInt(key, value); 
     editor.commit(); 
} 
public void LoadInt(){ 
     sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
     savedValue = sharedPreferences.getInt("key", 0); 
} 

Se si desidera salvare la variabile da qualche parte, è necessario scrivere SaveInt ("chiave", 5); Con questo si salverà il valore 5, mentre il primo valore predefinito è 0. Se si desidera caricarlo e utilizzarlo in un'altra attività, è necessario scrivere entrambi questi metodi e chiamare LoadInt(); dove hai bisogno della variabile. Il valore salvato è un numero intero predefinito (che deve essere dichiarato ovunque si desideri utilizzare la variabile salvata)

+0

https://gist.github.com/john1jan/b8cb536ca51a0b2aa1da4e81566869c4 – John