import android.preference.PreferenceManager;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
// then you use
prefs.getBoolean("keystring", true);
Aktualizacja
Zgodnie ze wspólnymi preferencjami | Samouczek programisty Androida (część 13) autorstwa Sai Geetha MN,
Wiele aplikacji może stanowić sposób na uchwycenie preferencji użytkownika dotyczących ustawień konkretnej aplikacji lub działania. Do obsługi tego systemu Android zapewnia prosty zestaw interfejsów API.
Preferencje to zazwyczaj pary wartości nazw. Mogą być przechowywane jako „Preferencje współdzielone” dla różnych działań w aplikacji (zauważ, że obecnie nie można ich współdzielić między procesami). Lub może to być coś, co należy przechowywać specyficzne dla działania.
Wspólne preferencje: Wspólne preferencje mogą być używane przez wszystkie komponenty (działania, usługi itp.) Aplikacji.
Preferencje obsługiwane przez działanie: Preferencje te mogą być używane tylko w ramach określonego działania i nie mogą być używane przez inne komponenty aplikacji.
Wspólne preferencje:
Wspólnymi preferencjami zarządza się za pomocą getSharedPreferences
metody Context
klasy. Preferencje są przechowywane w domyślnym pliku (1) lub można określić nazwę pliku (2), która będzie używana w odniesieniu do preferencji.
(1) Zalecanym sposobem jest korzystanie z trybu domyślnego bez podawania nazwy pliku
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
(2) Oto jak uzyskać instancję, gdy określasz nazwę pliku
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATE
to tryb działania preferencji. Jest to tryb domyślny i oznacza, że dostęp do utworzonego pliku będzie mieć tylko aplikacja wywołująca. Pozostałe dwa obsługiwane tryby to MODE_WORLD_READABLE
i MODE_WORLD_WRITEABLE
. W MODE_WORLD_READABLE
innej aplikacji można odczytać utworzony plik, ale nie można go zmodyfikować. W przypadku MODE_WORLD_WRITEABLE
innych aplikacji mają również uprawnienia do zapisu dla utworzonego pliku.
Wreszcie, gdy już masz instancję preferencji, oto jak możesz pobrać zapisane wartości z preferencji:
int storedPreference = preferences.getInt("storedInt", 0);
Do przechowywania wartości w pliku preferencji SharedPreference.Editor
należy użyć obiektu. Editor
jest zagnieżdżonym interfejsem w SharedPreference
klasie.
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Edytor obsługuje również metody takie jak remove()
i clear()
do usuwania wartości preferencji z pliku.
Preferencje aktywności:
Wspólne preferencje mogą być używane przez inne komponenty aplikacji. Ale jeśli nie musisz udostępniać preferencji innym komponentom i chcesz mieć prywatne preferencje dotyczące działania, możesz to zrobić za pomocą getPreferences()
metody działania. getPreference
Metoda wykorzystuje getSharedPreferences()
metodę o nazwie klasy aktywności dla nazwy pliku preferencji.
Poniżej znajduje się kod, aby uzyskać preferencje
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
Kod do przechowywania wartości jest również taki sam, jak w przypadku wspólnych preferencji.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Możesz także użyć innych metod, takich jak przechowywanie stanu aktywności w bazie danych. Uwaga Android zawiera także pakiet o nazwie android.preference
. Pakiet definiuje klasy do implementacji interfejsu użytkownika preferencji aplikacji.
Aby zobaczyć więcej przykładów, sprawdź post Android Storage Data na stronie programistów.
package.prefs
ale nie jestem pewien.Jeśli nie masz dostępu
getDefaultSharedPreferenes()
, możeszgetSharedPreferences(name, mode)
zamiast tego użyć , wystarczy podać prawidłową nazwę.Android tworzy tę nazwę (być może na podstawie nazwy pakietu twojego projektu?). Możesz go uzyskać, umieszczając następujący kod w
SettingsActivity
onCreate()
i sprawdzając, copreferencesName
jest.Sznurek powinien być podobny
com.example.projectname_preferences
. Twardy kod, który gdzieś w twoim projekcie, i przekaż gogetSharedPreferences()
i powinieneś być gotowy.źródło
Najpierw zadeklaruj te metody.
Następnie zadzwoń, gdy chcesz ustawić pref:
zadzwoń, jeśli chcesz otrzymać pref:
Możesz też użyć tego obiektu https://github.com/kcochibili/TinyDB--Android-Shared-Preferences-Turbo, co jeszcze bardziej upraszcza wszystko
Przykład:
źródło
konieczność wszędzie dookoła jest naprawdę denerwująca. kod staje się zbyt szczegółowy i niemożliwy do zarządzania. Zamiast tego robię to w każdym projekcie ...
i ustaw go w głównym działaniu create
także wszystkie klucze preferencji powinny być niezależne od języka, jestem zszokowany, nikt o tym nie wspominał.
teraz nazwij to tak po prostu w jednym wierszu kodu
źródło
getApplicationContext()
jeśli masz pole wyboru i chcesz pobrać jego wartość, tj. true / false w dowolnym pliku Java -
Posługiwać się--
źródło
Zaktualizowano 2019
Możesz po prostu użyć
PowerPreference
bibliotekihttps://github.com/AliEsaAssadi/Android-Power-Preference
Pobieranie udostępnionego wystąpienia preferencji
Aby uzyskać domyślną instancję, wystarczy zadzwonić
Lub jeśli chcesz określonego pliku preferencji
Zapisywanie danych:
Pobieranie danych
źródło
Spróbuj użyć kodu źródłowego, który dla mnie zadziałał
źródło