PreferenceManager getDefaultSharedPreferences in Android Q veraltet


Antworten:


190

Sie können die AndroidX-Unterstützungsbibliotheksversion von verwenden PreferenceManager, dh androidx.preference.PreferenceManagerund nicht android.preference.PreferenceManager.

Denken Sie daran, Ihrem build.gradle Folgendes hinzuzufügen.

implementation 'androidx.preference:preference:1.1.1'

49
Sie haben vergessen, die Abhängigkeit hinzuzufügen: Implementierung "androidx.preference: Präferenz: 1.1.0"
Abhinav Saxena

1
@AbhinavSaxena Ja natürlich. Dies ist implizit bei Verwendung einer Support-Bibliothek. Eine frühere Bearbeitung dieser Antwort fügte die Nur-Kotlin-Ktx-Abhängigkeit hinzu. Ich habe diese Bearbeitung zurückgesetzt, weil sie nur für Kotlin bestimmt war.
Laalto

Das muss wohl implementationnicht sein dependency?
Richard Barraclough

Nicht, dass das auch nicht funktioniert: Abhängigkeit für ': app @ debugAndroidTest / compileClasspath' kann nicht aufgelöst werden: Implementierung konnte nicht gefunden werden "androidx.preference: Präferenz: 1.1.0.
Richard Barraclough

Ich bin neugierig; Warum haben sie diese Schnittstelle abgelehnt und wurde eine andere Möglichkeit, gemeinsame Einstellungen zu erhalten, bevorzugt, oder war der Wechsel zu AndroidX die Absicht?
Edward Falk

146

Das Paket preferenceenthält den androidx PreferenceManager :

Java: implementation "androidx.preference:preference:1.1.1"

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


dh wechseln android.preference.PreferenceManagerzuandroidx.preference.PreferenceManager


Siehe auch PreferenceFragmentCompat , die aktuell PreferenceFragmentzu verwendende Klasse.


Es wurde ein direkter Link zu hinzugefügt PreferenceFragmentCompat, der damals noch nicht vorhanden war. In der Regel tritt dann als nächstes ein Verfallsproblem auf, wenn versucht wird, die Einstellungen zu aktualisieren. Die andere verknüpfte Antwort war nur für eine begrenzte Zeit gültig.
Martin Zeitler

Können wir in APIs vor API 29 verwenden?
H. Karatsanov


2

Wenn Sie nur Schlüssel-Wert-Paare speichern und abrufen, können Sie Folgendes ersetzen:

 prefs = PreferenceManager.getDefaultSharedPreferences(this); 

mit:

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

Stellen Sie sicher, dass Sie den richtigen Dateinamen für die neue Implementierung verwenden, da Ihre Benutzer sonst den Zugriff auf alle mit getDefaultSharedPreferences (!) Gespeicherten Daten verlieren. Im Folgenden wird der Dateiname abgerufen, den getDefaultSharedPreferences verwendet:

getPackageName() + "_preferences"

1

Ja, es ist veraltet. Verwenden Sie die AndroidX-Einstellungsbibliothek für ein konsistentes Verhalten auf allen Geräten. Weitere Informationen zur Verwendung der AndroidX-Einstellungsbibliothek finden Sie unter Einstellungen.

Folge dies -

PreferenceManager

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.