Preference
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.
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 dalamComponentDialog
atau saat menggunakan library seperti@AndroidEntryPoint
Hilt yang menggabungkanContext
Fragment.- Preferensi sekarang bergantung pada Activity 1.5.1. (Ie5d22)
PreferenceHeaderFragmentCompat.onCreateInitialDetailFragment
sekarang menyebarkanheader.extras
sebagai argumenFragment
.
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 metodeonCreatePreferenceHeader()
padaPreferenceHeaderFragmentCompat
. Semua<Preference>
dalam headerPreferenceFragmentCompat
yang menggunakanapp: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 menggantionCreateInitialDetailFragment()
. 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 antarmukaOnPreferenceStartFragmentCallback
,OnNavigateToScreenListener
, danOnDisplayPreferenceDialogListener
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 dariPreferenceHeaderFragmentCompat
- metode ini dipanggil untuk Anda dan tidak boleh dipanggil secara manual. (Ia6989)
Perubahan Perilaku
- Callback PreferenceFragmentCompat untuk
OnNavigateToScreenListener
, danOnDisplayPreferenceDialogListener
sekarang mengikuti pola yang sama denganOnPreferenceTreeClickListener
, 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
keonPreferenceTreeClick
kini mencari implementasi antarmukaOnPreferenceStartFragmentCallback
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 menampilkanIllegalStateException
saat meng-inflateFragmentContainerView
dari xml. (b/150051716)
Update dependensi
- Preferensi sekarang bergantung pada Fragmen
1.2.4
. (aosp/1277317) - Dependensi
preference-ktx
sekarang bergantung padaandroidx.core:core-ktx:1.1.0
danandroidx.fragment:fragment-ktx:1.2.4
, mencerminkan dependensi artefakpreference
utama, dan memastikan bahwa mengupgradepreference-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 menggunakanPreferenceFragmentCompat
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 penyesuaianEditText
yang ditampilkan dalam dialog yang terkait setelah dialog diikat. Ini adalah pengganti langsung dari penggunaan atribut sepertiandroid:inputType
secara langsung padaEditTextPreference
, 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 perubahanSeekBarPreference
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"
atausetShowSeekBarValue(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.
- Label nilai sekarang disembunyikan secara default meskipun masih dapat ditampilkan dengan
- 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"
atausetUpdatesContinuously(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.