2013-04-24 4 views
26

Próbuję przez ostatnią godzinę, aby zapisać liczbę całkowitą w mojej aplikacji Android. Czytałem, że można to zrobić za pomocą SharedPreferences. Jednak nie rozumiem, dlaczego tak trudno to zrobić.Android SharedPreferences, jak zapisać prostą zmienną int

Jak mogę po prostu zapisać zmienną int? A kiedy ponownie uruchomię aplikację, jak mogę ponownie wejść w interakcję z tą zmienną?

+0

** uproszczone podejście ** byłoby za pomocą tej biblioteki: http://github.com/viralypatel/Android -SharedPreferences-Helper ... rozszerzone szczegóły techniczne w mojej [answer here] (http://stackoverflow.com/a/35232248/1957401) ... – AndroidMechanic

+0

Sprawdź to http://www.gadgetsaint.com/go/ xb023 – ASP

Odpowiedz

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

Czy masz to jak:

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

Interfejs SharedPreference daje dostęp do pliku xml i łatwy sposób modyfikować poprzez edytora. Plik jest przechowywany w /data/data/com.your.package/shared_prefs/ i można uzyskać do niego dostęp za pośrednictwem tego SharedPreference API

+2

hmm, czy możesz umieścić komentarze, aby zrozumieć, co tam się dzieje, bo nie rozumiem przykładu? Która jest zmienna? Co to jest "your_prefs". Co to jest 0 obok niego. Co to jest "your_int_key" – donparalias

+1

Właściwie, musisz podać domyślną wartość 'getInt', która jest zwracana, gdy nie można znaleźć' int' z kluczem 'twój_int_key'. Coś takiego: 'int myIntValue = sp.getInt (" twój_int_key ", -1);' gdzie -1 jest wartością domyślną. – zbr

+2

Domyślam się, że 'clearNotificationsSP' w pierwszym przykładzie powinno być po prostu' sp', prawda? – Scorchio

6

Oto przykład ustawienia preferencji Boolean. Możesz również używać Integer.

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

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

Mam nadzieję, że to może być pomocne.

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

Jeśli chcesz zapisać gdzieś zmienną, musisz zapisać SaveInt ("key", 5); Dzięki temu zapiszesz wartość 5, podczas gdy pierwszą domyślną wartością jest 0. Jeśli chcesz ją załadować i użyć w innym działaniu, musisz zapisać tam obie te metody i wywołać LoadInt(); gdzie potrzebujesz zmiennej. Zapisana wartość jest predefiniowaną liczbą całkowitą (musi zostać zadeklarowana wszędzie tam, gdzie chciałbyś użyć zapisanej zmiennej).

+0

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