환경설정

기기 저장소와 상호작용하거나 UI를 관리할 필요 없이 대화형 설정 화면을 빌드합니다.
최근 업데이트 안정화 버전 출시 후보 버전 베타 버전 알파 버전
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에 포함된 커밋을 확인하세요.

버그 수정

  • 이제 PreferenceHeaderFragmentCompatComponentDialog 내에서 사용되거나 Fragment의 Context를 래핑하는 Hilt의 @AndroidEntryPoint와 같은 라이브러리를 사용할 때 시스템 뒤로 버튼을 올바르게 처리합니다.
  • 이제 Preference가 Activity 1.5.1에 종속됩니다. 추가했습니다. (Ie5d22)
  • 이제 PreferenceHeaderFragmentCompat.onCreateInitialDetailFragmentheader.extrasFragment 인수로 전파합니다.

버전 1.2.0

2022년 1월 26일

androidx.preference:preference:1.2.0androidx.preference:preference-ktx:1.2.0가 출시되었습니다. 버전 1.2.0에 포함된 커밋을 확인하세요.

1.1.0 이후 중요 변경사항

  • 사용하는 기기의 크기에 따라 자동으로 조정되는 2창 환경설정을 위해 PreferenceHeaderFragmentCompat를 추가했습니다. 따라서 스마트폰, 폴더블, 태블릿에서 사용하기에 적합합니다. 헤더 창은 PreferenceHeaderFragmentCompatonCreatePreferenceHeader() 메서드를 재정의하여 제공됩니다. 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-rc01androidx.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-beta01androidx.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-alpha02androidx.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-alpha01androidx.preference:preference-ktx:1.2.0-alpha01가 출시되었습니다. 버전 1.2.0-alpha01에 포함된 커밋을 확인하세요.

새로운 기능

  • 두 개의 창 환경설정을 위해 PreferenceHeaderFragmentCompat을 추가했습니다. (I9a2d8)

동작 변경사항

  • 이제 비활동 컨텍스트에서 OnPreferenceDisplayDialogCallback, OnPreferenceStartScreenCallback, OnPreferenceStartFragmentCallback의 환경설정 콜백을 구현할 수 있습니다. getActivity()를 확인하기 전에 getContext()를 확인하여 여기에서 이러한 콜백을 구현하는지 봅니다. getContext()가 활동을 반환하는 경우(일반적인 경우) 동작이 변경되지 않습니다.

  • PreferenceFragmentCompatonPreferenceTreeClick 호출은 이제 활동의 구현을 고려하기 전에 상위 프래그먼트의 OnPreferenceStartFragmentCallback 인터페이스의 구현을 찾습니다. (c64eed)

버전 1.1

버전 1.1.1

2020년 4월 15일

androidx.preference:preference:1.1.1androidx.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.0androidx.fragment:fragment-ktx:1.2.4에 종속되므로, 기본 preference 아티팩트의 종속 항목을 미러링하고 전이 종속 항목의 기본 및 -ktx 아티팩트 모두를 preference-ktx 업그레이드로 업데이트할 수 있습니다. (aosp/1277319 참조)

버전 1.1.0

2019년 9월 5일

androidx.preference:preference:1.1.0androidx.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-rc01androidx.preference:preference-ktx:1.1.0-rc01가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

API 변경사항

  • Preference#onInitializeAccessibilityNodeInfo가 지원 중단되었습니다.
  • 이 메서드는 특정 환경설정의 접근성 노드 정보를 프록시 처리했지만 맞춤설정에는 잘못된 레이어입니다. 접근성 정보를 조정하려면 대신 onBindViewHolder를 재정의하고 접근성 정보를 뷰에 직접 추가해야 합니다.

버전 1.1.0-beta01

2019년 6월 5일

androidx.preference:preference:1.1.0-beta01androidx.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-alpha05androidx.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-alpha04androidx.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-alpha03androidx.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 레이아웃 불일치 문제를 해결했습니다.