PreferenceManager getDefaultSharedPreferences는 Android Q에서 더 이상 사용되지 않습니다.


답변:


237

당신의 AndroidX 지원 라이브러리 버전을 사용할 수 있습니다 PreferenceManager, 즉, androidx.preference.PreferenceManager하지를 android.preference.PreferenceManager.

build.gradle에 다음을 추가하는 것을 잊지 마십시오.

implementation 'androidx.preference:preference:1.1.1'

50
종속성을 추가하는 것을 잊었습니다. implementation "androidx.preference : preference : 1.1.0"
Abhinav Saxena

1
@AbhinavSaxena 물론입니다. 이는 지원 라이브러리를 사용할 때 암시 적입니다. 이 답변에 대한 이전 편집은 kotlin 전용 ktx 종속성을 추가했습니다. kotlin 전용이기 때문에 편집을 롤백했습니다.
laalto

이것은 implementation아닐 것 같 dependency습니까?
Richard Barraclough

그것도 작동하지 않습니다 : ': app @ debugAndroidTest / compileClasspath'에 대한 종속성을 해결할 수 없음 : 구현을 찾을 수 없음 "androidx.preference : preference : 1.1.0.
Richard Barraclough

궁금해; 왜 그들은 그 인터페이스를 더 이상 사용하지 않았고, 공유 환경 설정을 얻는 다른 방법이 선호 되었습니까? 아니면 의도를 androidx로 전환 했습니까?
Edward Falk

161

패키지 preferenceandroidx PreferenceManager를 제공합니다 .

자바: implementation "androidx.preference:preference:1.1.1"

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


즉, 변화 android.preference.PreferenceManagerandroidx.preference.PreferenceManager


또한 현재 사용할 클래스 인 PreferenceFragmentCompat를 참조하십시오 PreferenceFragment.


PreferenceFragmentCompat그 당시에는 존재하지 않았던에 대한 직접 링크를 추가했습니다. 일반적으로 환경 설정을 업데이트하려고 할 때 직면 할 수있는 다음 지원 중단 문제입니다. 다른 연결된 답변은 제한된 시간 동안 만 유효했습니다.
마틴 이틀 러

API 29 이전의 API에서 사용할 수 있습니까?
H.Karatsanov

5

키-값 쌍을 저장하고 검색하는 경우 다음을 대체 할 수 있습니다.

 prefs = PreferenceManager.getDefaultSharedPreferences(this); 

와:

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

새 구현에 올바른 파일 이름을 사용해야합니다. 그렇지 않으면 사용자가 getDefaultSharedPreferences (!)로 저장된 모든 항목에 액세스 할 수 없게됩니다. 다음은 getDefaultSharedPreferences가 사용하는 파일 이름을 가져옵니다.

getPackageName() + "_preferences"


1

예, 더 이상 사용되지 않습니다. 모든 기기에서 일관된 동작을 위해 AndroidX 환경 설정 라이브러리를 사용하세요. AndroidX 환경 설정 라이브러리 사용에 대한 자세한 내용은 설정을 참조하십시오.

이것을 따르십시오-

PreferenceManager


0

Kotlin libray

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

kotlin use Configuration.getInstance (). load (this, androidx.preference.PreferenceManager.getDefaultSharedPreferences (this))

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.