PreferenceManager getDefaultSharedPreferences jest przestarzałe w systemie Android Q


Odpowiedzi:


237

Możesz użyć wersji biblioteki obsługującej AndroidX PreferenceManager, tj. androidx.preference.PreferenceManagerI nie android.preference.PreferenceManager.

pamiętaj, aby dodać następujące elementy do pliku build.gradle.

implementation 'androidx.preference:preference:1.1.1'

50
Zapomniałeś dodać zależność: implementacja "androidx.preference: preference: 1.1.0"
Abhinav Saxena

1
@AbhinavSaxena Tak, oczywiście. Jest to niejawne w przypadku korzystania z biblioteki wsparcia. Wcześniejsza edycja tej odpowiedzi dodała zależność ktx tylko do kotlin; Wycofałem tę edycję, ponieważ dotyczyła tylko kotlin.
laalto

Wydaje się, że tak implementationnie jest dependency?
Richard Barraclough

To też nie działa: Nie można rozwiązać zależności dla „: app @ debugAndroidTest / compileClasspath”: Nie można znaleźć implementacji ”androidx.preference: preference: 1.1.0.
Richard Barraclough

Jestem ciekawy; dlaczego zrezygnowali z tego interfejsu i czy preferowano inny sposób uzyskiwania wspólnych preferencji, czy też zamierzali przejść na androidx?
Edward Falk

161

Pakiet preferencezawiera androidx PreferenceManager :

Jawa: implementation "androidx.preference:preference:1.1.1"

Kotlin: implementation "androidx.preference:preference-ktx:1.1.1"


tj. zmień android.preference.PreferenceManagernaandroidx.preference.PreferenceManager


Zobacz także PreferenceFragmentCompat , która jest bieżącą PreferenceFragmentklasą do użycia.


Dodano bezpośredni link do PreferenceFragmentCompat, który wtedy nie istniał ... jest to zwykle następny problem z wycofywaniem, z którym można się spotkać, próbując zaktualizować preferencje. Druga połączona odpowiedź była ważna tylko przez ograniczony czas.
Martin Zeitler

Czy możemy używać interfejsów API przed API 29?
H.Karatsanov

5

Jeśli tylko zapisujesz i pobierasz pary klucz-wartość, możesz zamienić:

 prefs = PreferenceManager.getDefaultSharedPreferences(this); 

z:

 prefs = getSharedPreferences(
            "my.app.packagename_preferences", Context.MODE_PRIVATE);

Upewnij się, że używasz prawidłowej nazwy pliku dla nowej implementacji, w przeciwnym razie użytkownicy utracą dostęp do wszystkiego, co zapisano za pomocą getDefaultSharedPreferences (!). Poniższy kod otrzyma nazwę pliku używaną przez getDefaultSharedPreferences:

getPackageName() + "_preferences"


1

Tak, jest przestarzały. Użyj biblioteki preferencji AndroidX, aby zapewnić spójne działanie na wszystkich urządzeniach. Aby uzyskać więcej informacji na temat korzystania z biblioteki preferencji AndroidX, zobacz Ustawienia.

Obserwuj to -

PreferenceManager


0

kotlin libray

implementation 'androidx.preference:preference-ktx:1.1.1'

kotlin użyj Configuration.getInstance (). load (this, androidx.preference.PreferenceManager.getDefaultSharedPreferences (this))

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.