PreferenceManager getDefaultSharedPreferences, Android Q'da kullanımdan kaldırıldı


Yanıtlar:


215

Sen AndroidX destek kitaplığı sürümünü kullanabilirsiniz PreferenceManager, yani androidx.preference.PreferenceManagerdeğil android.preference.PreferenceManager.

build.gradle dosyanıza aşağıdakileri eklemeyi unutmayın.

implementation 'androidx.preference:preference:1.1.1'

50
Bağımlılığı eklemeyi unuttunuz: uygulama "androidx.preference: preference: 1.1.0"
Abhinav Saxena

1
@AbhinavSaxena Evet elbette. Bu, bir destek kitaplığı kullanırken örtük bir durumdur. Bu yanıta daha önce yapılan bir düzenleme, yalnızca kotlin ktx derinliğini ekledi; Sadece kotlin olduğu için bu düzenlemeyi geri aldım.
laalto

Bu olmak zorunda implementationdeğil dependencymi?
Richard Barraclough

Bu da işe yaramıyor: ': app @ debugAndroidTest / compileClasspath' bağımlılığı çözülemiyor: "androidx.preference: tercih: 1.1.0.
Richard Barraclough

Merak ediyorum; Neden bu arayüzü kullanımdan kaldırdılar ve paylaşılan tercihleri ​​elde etmenin başka bir yolu tercih edildi mi yoksa amaç androidx'e geçmek miydi?
Edward Falk

155

Paket preference, androidx PreferenceManager'ı sağlar :

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

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


yani değişim android.preference.PreferenceManageriçinandroidx.preference.PreferenceManager


Ayrıca , kullanılacak geçerli sınıf olan PreferenceFragmentCompat'a da bakın PreferenceFragment.


PreferenceFragmentCompatO zamanlar mevcut olmayan bir doğrudan bağlantı eklendi ... genellikle tercihleri ​​güncellemeye çalışırken karşılaşılabilecek bir sonraki kullanımdan kaldırma sorunudur. Diğer bağlantılı cevap sadece sınırlı bir süre için geçerliydi.
Martin Zeitler

API 29'dan önce API'lerde kullanabilir miyiz?
H. Karatsanov

3

Yalnızca anahtar / değer çiftlerini kaydediyor ve alıyorsanız, şunları değiştirebilirsiniz:

 prefs = PreferenceManager.getDefaultSharedPreferences(this); 

ile:

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

Yeni uygulama için doğru dosya adını kullandığınızdan emin olun, aksi takdirde kullanıcılarınız getDefaultSharedPreferences (!) İle kaydedilen her şeye erişimlerini kaybedeceklerdir. Aşağıdakiler getDefaultSharedPreferences'ın kullandığı dosya adını alır:

getPackageName() + "_preferences"


1

Evet, kullanımdan kaldırıldı. Tüm cihazlarda tutarlı davranış için AndroidX Tercih Kitaplığı'nı kullanın. AndroidX Tercih Kitaplığını kullanma hakkında daha fazla bilgi için bkz. Ayarlar

Bunu takip et -

PreferenceManager


0

kotlin libray

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

kotlin Configuration.getInstance (). load kullanın (this, androidx.preference.PreferenceManager.getDefaultSharedPreferences (this))

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.