Preference

Membuat layar setelan yang interaktif tanpa perlu berinteraksi dengan penyimpanan perangkat atau mengelola UI.
Update Terbaru Rilis Stabil Kandidat Rilis Rilis Beta Rilis Alfa
26 Juli 2023 1.2.1 - - -

Mendeklarasikan dependensi

Untuk menambahkan dependensi pada Preference, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.

Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:

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")
}

Untuk mengetahui informasi dependensi selengkapnya, lihat Menambahkan Dependensi Build.

Masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Versi 1.2

Versi 1.2.1

26 Juli 2023

androidx.preference:preference:1.2.1 dirilis. Versi 1.2.1 berisi commit ini.

Perbaikan Bug

  • PreferenceHeaderFragmentCompat kini menangani tombol kembali sistem dengan benar saat digunakan dalam ComponentDialog atau saat menggunakan library seperti @AndroidEntryPoint Hilt yang menggabungkan Context Fragment.
  • Preferensi sekarang bergantung pada Activity 1.5.1. (Ie5d22)
  • PreferenceHeaderFragmentCompat.onCreateInitialDetailFragment sekarang menyebarkan header.extras sebagai argumen Fragment.

Versi 1.2.0

26 Januari 2022

androidx.preference:preference:1.2.0 dan androidx.preference:preference-ktx:1.2.0 dirilis. Versi 1.2.0 berisi commit ini.

Perubahan penting sejak 1.1.0

  • Menambahkan PreferenceHeaderFragmentCompat untuk preferensi dua panel yang secara otomatis menyesuaikan ukuran perangkat yang digunakan, sehingga cocok untuk digunakan di ponsel, perangkat foldable, dan tablet. Panel header disediakan dengan mengganti metode onCreatePreferenceHeader() pada PreferenceHeaderFragmentCompat. Semua <Preference> dalam header PreferenceFragmentCompat yang menggunakan app:fragment akan menyebabkan fragmen tersebut muncul di panel detail kedua. Fragmen detail awal yang harus ditampilkan sebelum preferensi yang dipilih secara manual dapat disesuaikan dengan mengganti onCreateInitialDetailFragment(). Implementasi default menampilkan preferensi pertama yang berisi fragmen yang ditetapkan.
class TwoPanePreference : PreferenceHeaderFragmentCompat() {
    override fun onCreatePreferenceHeader(): PreferenceFragmentCompat {
        return PreferenceHeader()
    }
}
  • Menambahkan anotasi nullability ke banyak API yang sebelumnya tidak menentukan @NonNull atau @Nullable. Perubahan ini dapat menyebabkan gangguan sumber Kotlin jika nullability yang Anda pilih di kode Kotlin tidak cocok dengan nullability yang kini ditentukan.

  • PreferenceFragmentCompat kini mencari implementasi antarmuka OnPreferenceStartFragmentCallback, OnNavigateToScreenListener, dan OnDisplayPreferenceDialogListener pada fragmen induk sebelum mengetahui apakah Context atau Activity hosting menerapkan antarmuka ini.

Versi 1.2.0-rc01

15 Desember 2021

androidx.preference:preference:1.2.0-rc01 dan androidx.preference:preference-ktx:1.2.0-rc01 dirilis tanpa perubahan sejak 1.2.0-beta01. Versi 1.2.0-rc01 berisi commit berikut.

Versi 1.2.0-beta01

17 November 2021

androidx.preference:preference:1.2.0-beta01 dan androidx.preference:preference-ktx:1.2.0-beta01 dirilis tanpa perubahan dari Preference 1.2.0-alpha02. Versi 1.2.0-beta01 berisi commit berikut.

Versi 1.2.0-alpha02

3 November 2021

androidx.preference:preference:1.2.0-alpha02 dan androidx.preference:preference-ktx:1.2.0-alpha02 dirilis. Versi 1.2.0-alpha02 berisi commit ini.

Perubahan API

  • Menambahkan anotasi nullability ke banyak API yang sebelumnya tidak menentukan @NonNull atau @Nullable. (I04252, Ie2cc0)
  • Menghapus openPreference() API dari PreferenceHeaderFragmentCompat - metode ini dipanggil untuk Anda dan tidak boleh dipanggil secara manual. (Ia6989)

Perubahan Perilaku

  • Callback PreferenceFragmentCompat untuk OnNavigateToScreenListener, dan OnDisplayPreferenceDialogListener sekarang mengikuti pola yang sama dengan OnPreferenceTreeClickListener, dan mencari hierarki fragmen induk untuk pemroses yang valid sebelum mencari untuk mengetahui apakah Konteks atau Aktivitas hosting mengimplementasikan antarmuka ini. (I7ae6c)

Versi 1.2.0-alpha01

27 Oktober 2021

androidx.preference:preference:1.2.0-alpha01 dan androidx.preference:preference-ktx:1.2.0-alpha01 dirilis. Versi 1.2.0-alpha01 berisi commit ini.

Fitur Baru

  • Menambahkan PreferenceHeaderFragmentCompat untuk preferensi dua panel (I9a2d8)

Perubahan Perilaku

  • Callback preferensi untuk OnPreferenceDisplayDialogCallback, OnPreferenceStartScreenCallback, dan OnPreferenceStartFragmentCallback kini dapat diimplementasikan di Konteks non-Aktivitas. getContext() diperiksa untuk mengetahui apakah mengimplementasikan callback ini sebelum memeriksa getActivity(). Jika getContext() mengembalikan Aktivitas (kasus umum), berarti tidak ada perubahan perilaku.

  • Panggilan PreferenceFragmentCompat ke onPreferenceTreeClick kini mencari implementasi antarmuka OnPreferenceStartFragmentCallback pada fragmen induk sebelum mempertimbangkan implementasi Aktivitas. (c64eed)

Versi 1.1

Versi 1.1.1

15 April 2020

androidx.preference:preference:1.1.1 dan androidx.preference:preference-ktx:1.1.1 dirilis. Versi 1.1.1 berisi commit ini.

Perbaikan Bug

  • PreferenceDialogFragmentCompat tidak akan lagi menampilkan IllegalStateException saat meng-inflate FragmentContainerView dari xml. (b/150051716)

Update dependensi

  • Preferensi sekarang bergantung pada Fragmen 1.2.4. (aosp/1277317)
  • Dependensi preference-ktx sekarang bergantung pada androidx.core:core-ktx:1.1.0 dan androidx.fragment:fragment-ktx:1.2.4, mencerminkan dependensi artefak preference utama, dan memastikan bahwa mengupgrade preference-ktx akan mengupdate artefak utama dan artefak -ktx dependensi transitif. (aosp/1277319)

Versi 1.1.0

5 September 2019

androidx.preference:preference:1.1.0 dan androidx.preference:preference-ktx:1.1.0 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Jika ini pertama kalinya Anda melakukan update ke rilis 1.1.*, berikut adalah daftar singkat perubahan lebih besar sejak rilis stabil terakhir, 1.0.0. Panduan setelan, contoh aplikasi, dan diskusi Android Dev Summit mungkin bermanfaat untuk Anda.

Perubahan penting sejak versi 1.0.0

  • PreferenceFragment dan class lain yang menggunakan Fragment framework kini sudah tidak digunakan lagi; Anda sekarang harus menggunakan PreferenceFragmentCompat dan class *compat lainnya.
  • Anda kini dapat menetapkan SummaryProvider pada Preference untuk mengonfigurasi ringkasannya secara dinamis setiap kali Preference diupdate, atau menjadi dapat dilihat oleh pengguna. Lihat panduan untuk informasi selengkapnya.
  • Menambahkan antarmuka EditTextPreference.OnBindEditTextListener. Penambahan ini memungkinkan penyesuaian EditText yang ditampilkan dalam dialog yang terkait setelah dialog diikat. Ini adalah pengganti langsung dari penggunaan atribut seperti android:inputType secara langsung pada EditTextPreference, yang tidak didukung pada library AndroidX. Lihat panduan untuk informasi selengkapnya.
  • Menambahkan Preference.setCopyingEnabled() Saat ditetapkan, gestur tekan lama pada Preference akan menampilkan menu konteks yang memungkinkan penyalinan ringkasan Preference.
  • Mengupdate gaya SeekBarPreference agar sesuai dengan spesifikasi Material. Silakan lihat log perubahan mendetail untuk mengetahui perubahan SeekBarPreference lainnya.
  • Sejumlah besar perbaikan bug, update gaya, perbaikan kompatibilitas API level, dan peningkatan QOL secara umum.

Versi 1.1.0-rc01

2 Juli 2019

androidx.preference:preference:1.1.0-rc01 dan androidx.preference:preference-ktx:1.1.0-rc01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Perubahan API

  • Menghentikan penggunaan Preference#onInitializeAccessibilityNodeInfo
  • Metode ini mem-proxy info node aksesibilitas untuk Preference tertentu - tetapi ini adalah lapisan yang salah untuk penyesuaian ini. Jika ingin menyesuaikan informasi aksesibilitas, sebaiknya Anda mengganti onBindViewHolder, dan menambahkan informasi aksesibilitas ke tampilan secara langsung.

Versi 1.1.0-beta01

5 Juni 2019

androidx.preference:preference:1.1.0-beta01 dan androidx.preference:preference-ktx:1.1.0-beta01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Perubahan penting sejak 1.1.0

Jika ini pertama kalinya Anda melakukan update ke rilis 1.1.*, berikut adalah daftar singkat perubahan lebih besar sejak rilis stabil terakhir, 1.1.0. Panduan setelan, contoh aplikasi, dan diskusi Android Dev Summit mungkin bermanfaat untuk Anda.

  • PreferenceFragment dan class lain yang menggunakan framework Fragment kini sudah tidak digunakan lagi - Anda sekarang harus menggunakan PreferenceFragmentCompat dan class *compat lainnya.
  • Anda kini dapat menetapkan SummaryProvider pada Preference untuk mengonfigurasi ringkasannya secara dinamis setiap kali Preference diupdate, atau menjadi dapat dilihat oleh pengguna. Lihat panduan untuk informasi selengkapnya.
  • Menambahkan antarmuka EditTextPreference.OnBindEditTextListener. Antarmuka ini memungkinkan penyesuaian EditText yang ditampilkan dalam dialog yang terkait setelah dialog diikat. Ini adalah pengganti langsung dari penggunaan atribut seperti android:inputType langsung pada EditTextPreference, yang tidak didukung pada library AndroidX. Lihat panduan untuk informasi selengkapnya.
  • Menambahkan Preference.setCopyingEnabled() Saat ditetapkan, gestur tekan lama pada Preference akan menampilkan menu konteks yang memungkinkan penyalinan ringkasan Preference.
  • Mengupdate gaya SeekBarPreference agar sesuai dengan spesifikasi Material. Lihat changelog terperinci untuk perubahan lain pada SeekBarPreference.
  • Sejumlah besar perbaikan bug, update gaya, perbaikan kompatibilitas API level, dan peningkatan QOL secara umum.

Perubahan API sejak 1.1.0-alpha05

  • Menghapus getOnBindEditTextListener dari API publik. Anda hanya perlu menggunakan setOnBindEditTextListener saat berinteraksi dengan API ini.

Harap laporkan bug di sini jika Anda mengalami masalah, atau jika memiliki saran untuk fitur baru.

Versi 1.1.0-alpha05

7 Mei 2019

androidx.preference:preference:1.1.0-alpha05 dan androidx.preference:preference-ktx:1.1.0-alpha05 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Fitur baru

  • Mengupdate gaya untuk Preference yang tidak dapat dipilih - judul dan ringkasan sekarang menggunakan warna yang sama untuk memperjelas bahwa keduanya tidak dapat diinteraksikan, dan hanya digunakan untuk menampilkan informasi.
  • Catatan: Anda dapat mencoba menambahkan enableCopying="true" ke Preference yang tidak dapat dipilih sehingga Anda dapat menekan lama untuk menyalin ringkasan.

Perbaikan bug

  • Memperbaiki regresi di mana PreferenceCategory dan Preference yang tidak dapat dipilih lainnya memiliki efek domino ketika dipilih
  • Memperbaiki masalah aksesibilitas di mana TalkBack tidak menganggap DropDownPreference sebagai dapat diklik
  • Memperbaiki beberapa masalah tata letak RTL
  • Mengupdate beberapa anotasi nullable di PreferenceFragmentCompat agar sesuai dengan Fragment

Versi 1.1.0-alpha04

13 Maret 2019

androidx.preference:preference:1.1.0-alpha04 dan androidx.preference:preference-ktx:1.1.0-alpha04 dirilis. Daftar lengkap commit yang disertakan dalam versi ini dapat dilihat di sini.

Fitur baru

Pembaruan untuk SeekBarPreference!

  • Memperbarui gaya agar sesuai dengan Spesifikasi Material
    • Label nilai sekarang disembunyikan secara default meskipun masih dapat ditampilkan dengan app:showSeekBarValue="true" atau setShowSeekBarValue(true). Label ini bukan bagian dari spesifikasi Material, tetapi kami memahami bahwa label ini sangat banyak digunakan sehingga kami akan terus mendukungnya - meskipun tidak merekomendasikan penggunaannya.
    • Label nilai sekarang diperbarui saat SeekBar ditarik, bukan saat dilepas. Perhatikan bahwa ini tidak berarti nilai diperbarui secara internal, lihat di bawah untuk API baru yang memungkinkan fungsionalitas tersebut.
    • Catatan: Meskipun didukung, sebaiknya Anda menghindari menetapkan ringkasan pada SeekBarPreference, karena tindakan tersebut tidak dimaksudkan dan bukan bagian dari spesifikasi Material.
  • Menambahkan dukungan untuk pembaruan terus-menerus, yang memungkinkan SeekBar memperbarui nilai yang disimpannya saat SeekBar ditarik. Dukungan ini dapat diaktifkan dari XML atau secara terprogram, dengan app:updatesContinuously="true" atau setUpdatesContinuously(true). Dukungan ini akan aktif setiap kali posisi SeekBar di layar berubah.

Perubahan API

  • Menambahkan anotasi nullability yang tidak ada ke findPreference()

Perbaikan bug

  • Memperbaiki bug di mana pemroses menu konteks tidak dihapus dengan benar jika penyalinan tidak diaktifkan

Versi 1.1.0-alpha03

7 Februari 2019

androidx.preference:preference 1.1.0-alpha03

androidx.preference:preference 1.1.0-alpha03 dan androidx.preference:preference-ktx 1.1.0-alpha03 dirilis dengan perubahan berikut ini.

Perbaikan bug

  • Memperbaiki masalah di mana jendela pop-up copy/paste terkadang tidak muncul di dialog EditTextPreference
  • Memperbaiki masalah di mana adapter pokok tidak terdaftar dengan benar, sehingga menyebabkan kebocoran memori dalam kondisi tertentu (b/121006469)
  • Memperbaiki beberapa error terkait dialog yang terjadi selama perubahan konfigurasi (b/122167543)
  • Memperbaiki SummaryProvider yang tidak berfungsi untuk MultiSelectListPreference (b/123022772)

Versi 1.1.0-alpha02

17 Desember 2018

Baca juga Panduan setelan dan contoh aplikasi yang baru saja diperbarui.

Fitur baru

  • Menambahkan antarmuka EditTextPreference.OnBindEditTextListener Penambahan ini memungkinkan penyesuaian EditText yang ditampilkan dalam dialog yang sesuai setelah dialog terikat. Misalnya, menetapkan jenis/panjang input kustom atau menambahkan TextWatcher.

  • Menambahkan Preference.setCopyingEnabled() Jika ditetapkan, gestur tekan lama pada Preference akan menampilkan menu konteks yang memungkinkan penyalinan ringkasan Preference. Fitur ini dapat digunakan untuk mengizinkan penyalinan informasi statis seperti ID khusus pengguna/informasi versi aplikasi.

  • preferenceTheme sekarang diterapkan pada tema aktivitas Artinya, saat membuat Preference dari kode, Anda tidak perlu lagi menggunakan konteks dari PreferenceManager#getContext(); cukup gunakan konteks Fragmen/Aktivitas.

Perubahan API

  • Memfaktorkan ulang findPreference() untuk menampilkan <T extends Preference> Artinya, Anda tidak perlu mentransmisikan Preference secara eksplisit saat menggunakan findPreference(). Misalnya, EditTextPreference preference = findPreference(“edit_text”) sekarang adalah kode yang valid.

Versi 1.1.0-alpha01

5 November 2018

Fitur baru

  • Anda kini dapat menetapkan SummaryProvider pada Preference untuk mengonfigurasi ringkasannya secara dinamis setiap kali Preference diperbarui, atau menjadi terlihat oleh pengguna.
  • Menambahkan implementasi SummaryProvider default untuk ListPreference dan EditTextPreference, yang ketika ditetapkan akan otomatis memperbarui ringkasan Preference agar menampilkan nilai tersimpannya, atau 'Not Set' jika tidak ada nilai yang tersimpan. Fitur ini dapat ditetapkan dengan app:useSimpleSummaryProvider=”true”
  • Menambahkan PreferenceGroup#removePreferenceRecursively yang secara berulang menemukan dan menghapus Preference dari grup, atau grup bertingkat yang lebih rendah dalam hierarki.

Perubahan API

  • PreferenceFragment dan class lain yang menggunakan framework Fragmen tidak digunakan lagi. Anda kini dapat menggunakan PreferenceFragmentCompat dan class compat lainnya.

Perbaikan bug

  • Memperbaiki iconSpaceReserved yang tidak berfungsi dengan baik dengan PreferenceCategories.
  • Memperbaiki PreferenceCategories yang tidak menggunakan colorAccent untuk warna judulnya pada API sebelum level 21.
  • Memperbaiki beberapa inkonsistensi tata letak SeekBarPreference pada API sebelum level 21.