환경설정
| 최근 업데이트 | 안정화 버전 | 출시 후보 버전 | 베타 버전 | 알파 버전 | 
|---|---|---|---|---|
| 2023년 7월 26일 | 1.2.1 | - | - | - | 
종속 항목 선언
Preference의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.
다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속 항목을 추가합니다.
Groovy
dependencies { def preference_version = "1.2.1" // Java language implementation implementation "androidx.preference:preference:$preference_version" // Kotlin implementation "androidx.preference:preference-ktx:$preference_version" }
Kotlin
dependencies { val preference_version = "1.2.1" // Java language implementation implementation("androidx.preference:preference:$preference_version") // Kotlin implementation("androidx.preference:preference-ktx:$preference_version") }
종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.
의견
제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.
자세한 내용은 Issue Tracker 문서를 참고하세요.
버전 1.2
버전 1.2.1
2023년 7월 26일
androidx.preference:preference:1.2.1이 출시되었습니다. 버전 1.2.1에 포함된 커밋을 확인하세요.
버그 수정
- 이제 PreferenceHeaderFragmentCompat가ComponentDialog내에서 사용될 때 또는 프래그먼트의Context를 래핑하는 Hilt의@AndroidEntryPoint와 같은 라이브러리를 사용할 때 시스템 뒤로 버튼을 올바르게 처리합니다.
- 이제 Preference가 Activity 1.5.1에 종속됩니다. 추가했습니다. (Ie5d22)
- 이제 PreferenceHeaderFragmentCompat.onCreateInitialDetailFragment가header.extras를Fragment인수로 전파합니다.
버전 1.2.0
2022년 1월 26일
androidx.preference:preference:1.2.0 및 androidx.preference:preference-ktx:1.2.0이 출시되었습니다. 버전 1.2.0에 포함된 커밋을 확인하세요.
1.1.0 이후 중요 변경사항
- 사용하는 기기의 크기에 따라 자동으로 조정되는 2창 환경설정을 위해 PreferenceHeaderFragmentCompat를 추가했습니다. 따라서 스마트폰, 폴더블, 태블릿에서 사용하기에 적합합니다. 헤더 창은PreferenceHeaderFragmentCompat의onCreatePreferenceHeader()메서드를 재정의하여 제공됩니다.app:fragment를 사용하는PreferenceFragmentCompat헤더에<Preference>가 있으면 이 프래그먼트가 두 번째 세부정보 창에 나타납니다. 환경설정을 수동으로 선택하기 전에 표시되는 초기 세부 프래그먼트는onCreateInitialDetailFragment()를 재정의하여 맞춤설정할 수 있습니다. 기본 구현에서는 프래그먼트가 정의된 첫 번째 환경설정을 반환합니다.
class TwoPanePreference : PreferenceHeaderFragmentCompat() {
    override fun onCreatePreferenceHeader(): PreferenceFragmentCompat {
        return PreferenceHeader()
    }
}
- 이전에 - @NonNull또는- @Nullable을 지정하지 않았던 많은 API에 null 허용 여부 주석이 추가되었습니다. 이는 Kotlin 코드에서 선택한 null 허용 여부가 현재 정의된 null 허용 여부와 일치하지 않을 경우 Kotlin 소스 브레이킹 체인지일 수 있습니다.
- PreferenceFragmentCompat는 이제 상위 프래그먼트에서- OnPreferenceStartFragmentCallback,- OnNavigateToScreenListener,- OnDisplayPreferenceDialogListener인터페이스의 구현을 검색한 후 호스팅 컨텍스트 또는 활동에서 이러한 인터페이스를 구현하는지 확인합니다.
버전 1.2.0-rc01
2021년 12월 15일
androidx.preference:preference:1.2.0-rc01 및 androidx.preference:preference-ktx:1.2.0-rc01 버전은 1.2.0-beta01 이후 변경사항 없이 출시되었습니다. 버전 1.2.0-rc01에 포함된 커밋을 확인하세요.
버전 1.2.0-beta01
2021년 11월 17일
androidx.preference:preference:1.2.0-beta01 및 androidx.preference:preference-ktx:1.2.0-beta01이 Preference 1.2.0-alpha02에서 변경사항 없이 출시되었습니다. 버전 1.2.0-beta01에 포함된 커밋을 확인하세요.
버전 1.2.0-alpha02
2021년 11월 3일
androidx.preference:preference:1.2.0-alpha02 및 androidx.preference:preference-ktx:1.2.0-alpha02가 출시되었습니다. 버전 1.2.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
- 이전에 @NonNull또는@Nullable을 지정하지 않았던 많은 API에 null 허용 여부 주석이 추가되었습니다. (I04252, Ie2cc0)
- PreferenceHeaderFragmentCompat에서- openPreference()API를 삭제했습니다. 이 메서드는 자동으로 호출되며 수동으로 호출하면 안 됩니다. (Ia6989)
동작 변경사항
- OnNavigateToScreenListener의 PreferenceFragmentCompat 콜백과- OnDisplayPreferenceDialogListener는 이제- OnPreferenceTreeClickListener와 동일한 패턴을 따르며 호스팅 컨텍스트 또는 활동이 이러한 인터페이스를 구현하는지 확인하기 전에 상위 프래그먼트 계층 구조에 유효한 리스너가 있는지 조회합니다. (I7ae6c)
버전 1.2.0-alpha01
2021년 10월 27일
androidx.preference:preference:1.2.0-alpha01 및 androidx.preference:preference-ktx:1.2.0-alpha01이 출시되었습니다. 버전 1.2.0-alpha01에 포함된 커밋을 확인하세요.
새로운 기능
- 두 개의 창 환경설정을 위해 PreferenceHeaderFragmentCompat을 추가했습니다. (I9a2d8)
동작 변경사항
- 이제 비활동 컨텍스트에서 OnPreferenceDisplayDialogCallback, OnPreferenceStartScreenCallback, OnPreferenceStartFragmentCallback의 환경설정 콜백을 구현할 수 있습니다. getActivity()를 확인하기 전에 getContext()를 확인하여 여기에서 이러한 콜백을 구현하는지 봅니다. getContext()가 활동을 반환하는 경우(일반적인 경우) 동작이 변경되지 않습니다. 
- PreferenceFragmentCompat의- onPreferenceTreeClick호출은 이제 활동의 구현을 고려하기 전에 상위 프래그먼트의- OnPreferenceStartFragmentCallback인터페이스의 구현을 찾습니다. (c64eed)
버전 1.1
버전 1.1.1
2020년 4월 15일
androidx.preference:preference:1.1.1 및 androidx.preference:preference-ktx:1.1.1가 출시되었습니다. 버전 1.1.1에 포함된 커밋을 확인하세요.
버그 수정
- xml에서 FragmentContainerView를 확장할 때PreferenceDialogFragmentCompat에서IllegalStateException이 더 이상 발생하지 않습니다. (b/150051716 참조)
종속 항목 업데이트
- 이제 Preference가 Fragment 1.2.4에 종속됩니다. (aosp/1277317 참조)
- preference-ktx종속 항목은 이제- androidx.core:core-ktx:1.1.0과- androidx.fragment:fragment-ktx:1.2.4에 종속되므로, 기본- preference아티팩트의 종속 항목을 미러링하고 전이 종속 항목의 기본 및- -ktx아티팩트 모두를- preference-ktx업그레이드로 업데이트할 수 있습니다. (aosp/1277319 참조)
버전 1.1.0
2019년 9월 5일
androidx.preference:preference:1.1.0 및 androidx.preference:preference-ktx:1.1.0이 출시되었습니다.  이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
이 버전이 업데이트할 첫 번째 1.1.* 릴리스라면 마지막 안정적인 1.0.0 출시 이후의 큰 변경사항을 간략히 설명한 다음 목록을 참고하세요.  설정 가이드, 샘플 앱 및 Android Dev Summit 대화도 유용할 수 있습니다.
1.0.0 이후 중요 변경사항
- 프레임워크 Fragment를 사용하는 PreferenceFragment및 기타 클래스가 지원 중단되었습니다. 대신PreferenceFragmentCompat및 기타 *compat 클래스를 사용해야 합니다.
- 이제 Preference에서 SummaryProvider를 설정하여 Preference가 업데이트되거나 사용자에게 표시될 때마다 요약을 동적으로 구성할 수 있습니다. 자세한 내용은 가이드를 참고하세요.
- EditTextPreference.OnBindEditTextListener인터페이스가 추가되었습니다. 이러한 추가를 통해 대화상자가 결합된 후 대화상자에 표시되는- EditText를 맞춤설정할 수 있습니다. 이 기능은- EditTextPreference에서 직접- android:inputType과 같은 속성을 사용하는 직접적인 대체 방법이며 AndroidX 라이브러리에서는 지원되지 않습니다. 자세한 내용은 가이드를 참조하세요.
- Preference.setCopyingEnabled()가 추가되었습니다. 이에 따라 설정 시 Preference를 길게 누르면 Preference 요약을 복사할 수 있는 컨텍스트 메뉴가 표시됩니다.
- 머티리얼 사양과 일치하도록 SeekBarPreference스타일 지정이 업데이트되었습니다.SeekBarPreference에 관한 다른 변경사항은 상세 changelog를 참조하세요.
- 대량의 버그를 수정하고 스타일을 업데이트하며 API 레벨 호환성을 수정하고 일반적인 QOL을 개선했습니다.
버전 1.1.0-rc01
2019년 7월 2일
androidx.preference:preference:1.1.0-rc01 및 androidx.preference:preference-ktx:1.1.0-rc01가 출시되었습니다.  이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
API 변경사항
- Preference#onInitializeAccessibilityNodeInfo가 지원 중단되었습니다.
- 이 메서드는 특정 환경설정의 접근성 노드 정보를 프록시 처리했지만 맞춤설정에는 잘못된 레이어입니다. 접근성 정보를 조정하려면 대신 onBindViewHolder를 재정의하고 접근성 정보를 뷰에 직접 추가해야 합니다.
버전 1.1.0-beta01
2019년 6월 5일
androidx.preference:preference:1.1.0-beta01 및 androidx.preference:preference-ktx:1.1.0-beta01가 출시되었습니다.  이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
1.1.0 이후 중요 변경사항
이 버전이 업데이트할 첫 번째 1.1.* 출시인 경우 마지막 안정적인 출시 1.1.0 이후의 큰 변경사항이 담긴 간략한 목록이 여기 있습니다. 설정 가이드, 샘플 앱 및 Android Dev Summit 대화도 유용할 수 있습니다.
- 프레임워크 Fragment를 사용하는 PreferenceFragment 및 기타 클래스가 지원 중단되었습니다. 대신 PreferenceFragmentCompat와 기타 *compat 클래스를 사용해야 합니다.
- 이제 환경설정에서 SummaryProvider를 설정하여 환경설정이 업데이트되거나 사용자에게 표시될 때마다 요약을 동적으로 구성할 수 있습니다. 자세한 내용은 가이드를 참고하세요.
- EditTextPreference.OnBindEditTextListener인터페이스가 추가되었습니다. 이러한 추가를 통해 대화상자가 결합된 후 대화상자에 표시되는 EditText를 맞춤설정할 수 있습니다. 이것은 EditTextPreference에서 직접 android:inputType과 같은 속성을 사용하는 직접적인 대체 방법이며 AndroidX 라이브러리에서는 지원되지 않습니다. 자세한 내용은 가이드를 참조하세요.
- Preference.setCopyingEnabled()가 추가되었습니다. 이에 따라 설정 시 Preference를 길게 누르면 Preference 요약을 복사할 수 있는 컨텍스트 메뉴가 표시됩니다.
- SeekBarPreference 스타일 지정을 업데이트하여 소재 사양과 일치합니다. SeekBarPreference에 관한 다른 변경사항은 상세 changelog를 참조하세요.
- 대량의 버그를 수정하고 스타일을 업데이트하며 API 레벨 호환성을 수정하고 일반적인 QOL을 개선했습니다.
1.1.0-alpha05 이후 API 변경사항
- 공개 API에서 getOnBindEditTextListener를 삭제합니다. 이 API와 상호작용할 때만 setOnBindEditTextListener를 사용할 필요가 있습니다.
문제가 발생하거나 새로운 기능에 관한 제안사항이 있으면 여기에 버그를 신고하세요.
버전 1.1.0-alpha05
2019년 5월 7일
androidx.preference:preference:1.1.0-alpha05 및 androidx.preference:preference-ktx:1.1.0-alpha05이 출시되었습니다.  이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
- 선택 불가능한 환경설정의 스타일 지정을 업데이트했습니다. 이제 제목과 요약이 같은 색상을 공유해 두 가지가 상호작용할 수 없으며 정보 표시에만 사용됨을 분명히 했습니다.
- 참고: 선택 불가능한 환경설정에 enableCopying="true"를 추가하는 것을 고려할 수 있습니다. 그렇게 하면 길게 눌러 요약을 복사할 수 있습니다.
버그 수정
- PreferenceCategory 및 기타 선택 불가능한 환경설정에서 선택 시 파급 효과가 발생하는 회귀 문제를 해결했습니다.
- TalkBack에서 DropDownPreference가 클릭 가능한 것으로 표시되지 않는 접근성 문제를 해결했습니다.
- 일부 RTL 레이아웃 문제를 해결했습니다.
- PreferenceFragmentCompat에서 일부 nullable 주석을 업데이트하여 Fragment와 일치합니다.
버전 1.1.0-alpha04
2019년 3월 13일
androidx.preference:preference:1.1.0-alpha04 및 androidx.preference:preference-ktx:1.1.0-alpha04가 출시되었습니다.  이 버전에 포함된 커밋의 전체 목록은 여기에서 확인할 수 있습니다.
새로운 기능
SeekBarPreference 업데이트!
- 머티리얼 사양과 일치하도록 스타일 지정이 업데이트되었습니다.- 값 라벨이 여전히 app:showSeekBarValue="true"또는setShowSeekBarValue(true)로 표시될 수 있지만 이제 기본적으로 숨겨져 있습니다. 이 라벨은 머티리얼 사양의 일부는 아니지만 많이 사용되는 사실을 알기 때문에 사용을 권장하지는 않더라도 지원은 계속됩니다.
- 이제 SeekBar를 놓을 때가 아니라 드래그하는 동안 값 라벨이 업데이트됩니다. 내부적으로 값이 업데이트된다는 점은 아님에 주의하세요. 이와 같은 기능을 사용 설정하는 새로운 API는 아래를 참조하세요.
- 참고: 지원은 되지만 SeekBarPreference에서 요약은 설정하지 않아야 합니다. 목적에도 맞지 않고 소재 사양의 일부도 아니기 때문입니다.
 
- 값 라벨이 여전히 
- 지속적인 업데이트 지원을 추가하여 SeekBar가 드래그되는 동안 저장된 값을 업데이트할 수 있도록 합니다. XML에서 또는 프로그래매틱 방식으로 app:updatesContinuously="true"또는setUpdatesContinuously(true)로 사용 설정할 수 있습니다. 화면에서 SeekBar의 위치가 변경될 때마다 실행됩니다.
API 변경사항
- 누락된 null 허용 여부 주석이 findPreference()에 추가되었습니다.
버그 수정
- 복사가 사용 설정되지 않은 경우 컨텍스트 메뉴 리스너가 올바르게 삭제되지 않는 버그를 수정했습니다.
버전 1.1.0-alpha03
2019년 2월 7일
androidx.preference:preference 1.1.0-alpha03
androidx.preference:preference 1.1.0-alpha03 및 androidx.preference:preference-ktx 1.1.0-alpha03 버전이 다음 변경사항과 함께 출시되었습니다.
버그 수정
- EditTextPreference의 대화상자에 가끔 복사/붙여넣기 팝업이 표시되지 않는 문제를 해결했습니다.
- 기본 어댑터가 올바르게 등록 취소되지 않아 특정 조건에서 메모리 누수가 발생하는 문제를 수정했습니다(b/121006469).
- 구성 변경 중 발생하는 일부 대화상자 관련 비정상 종료 문제를 해결했습니다(b/122167543).
- MultiSelectListPreference에 SummaryProvider가 작동하지 않는 문제를 해결했습니다(b/123022772).
버전 1.1.0-alpha02
2018년 12월 17일
새로운 기능
- EditTextPreference.OnBindEditTextListener인터페이스가 추가되었습니다. 이러한 추가를 통해 대화상자가 결합된 후 그 대화상자에 표시되는 EditText를 맞춤설정할 수 있습니다. 예를 들어 맞춤 입력 유형/길이를 설정하거나 TextWatcher를 추가합니다.
- Preference.setCopyingEnabled()가 추가되었습니다. 이에 따라 설정 시 Preference를 길게 누르면 Preference 요약을 복사할 수 있는 컨텍스트 메뉴가 표시됩니다. 사용자별 ID/애플리케이션 버전 정보와 같은 정적 정보를 복사하는 데 사용할 수 있습니다.
- 이제 preferenceTheme이 활동 테마에 적용됩니다. 즉, 코드에서 Preference를 생성할 때 더 이상 - PreferenceManager#getContext()의 컨텍스트를 사용할 필요가 없습니다. Fragment/Activity 컨텍스트를 사용하기만 하면 됩니다.
API 변경사항
- findPreference()가 리팩터링되어- <T extends Preference>를 반환합니다. 즉, findPreference()를 사용할 때 Preference를 명시적으로 변환할 필요가 없습니다. 예를 들어- EditTextPreference preference = findPreference(“edit_text”)는 이제 유효한 코드입니다.
버전 1.1.0-alpha01
2018년 11월 5일
새로운 기능
- 이제 Preference에서 SummaryProvider를 설정하여 Preference가 업데이트되거나 사용자에게 표시될 때마다 요약을 동적으로 구성할 수 있습니다.
- ListPreference와 EditTextPreference에 기본 SummaryProvider 구현이 추가되었습니다. 이로써 설정 시 자동으로 Preference 요약을 업데이트하여 저장된 값을 반영하거나 저장된 값이 없는 경우 'Not Set'을 반영합니다. app:useSimpleSummaryProvider=”true”로 설정할 수도 있습니다.
- 그룹 또는 계층 구조의 하위에 있는 중첩된 그룹에서 Preference를 반복적으로 찾아서 삭제하는 PreferenceGroup#removePreferenceRecursively가 추가되었습니다.
API 변경사항
- 프레임워크 Fragment를 사용하는 PreferenceFragment 및 기타 클래스가 지원 중단되었습니다. 대신 PreferenceFragmentCompat과 기타 compat 클래스를 사용해야 합니다.
버그 수정
- PreferenceCategories에서 iconSpaceReserved가 올바르게 작동되지 않는 문제를 해결했습니다.
- PreferenceCategories가 API 21 이하에서 제목 색상에 colorAccent를 사용하지 않는 문제를 해결했습니다.
- API 21 이하에서 일부 SeekBarPreference 레이아웃 불일치 문제를 해결했습니다.
