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
PreferenceHeaderFragmentCompatkini menangani tombol kembali sistem dengan benar saat digunakan dalamComponentDialogatau saat menggunakan library seperti@AndroidEntryPointHilt yang menggabungkanContextFragment.- Preferensi sekarang bergantung pada Activity 1.5.1. (Ie5d22)
PreferenceHeaderFragmentCompat.onCreateInitialDetailFragmentsekarang menyebarkanheader.extrassebagai 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
PreferenceHeaderFragmentCompatuntuk 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 headerPreferenceFragmentCompatyang menggunakanapp:fragmentakan 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
@NonNullatau@Nullable. Perubahan ini dapat menyebabkan gangguan sumber Kotlin jika nullability yang Anda pilih di kode Kotlin tidak cocok dengan nullability yang kini ditentukan.PreferenceFragmentCompatkini mencari implementasi antarmukaOnPreferenceStartFragmentCallback,OnNavigateToScreenListener, danOnDisplayPreferenceDialogListenerpada 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
@NonNullatau@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, danOnDisplayPreferenceDialogListenersekarang 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
PreferenceHeaderFragmentCompatuntuk 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
PreferenceFragmentCompatkeonPreferenceTreeClickkini mencari implementasi antarmukaOnPreferenceStartFragmentCallbackpada 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
PreferenceDialogFragmentCompattidak akan lagi menampilkanIllegalStateExceptionsaat meng-inflateFragmentContainerViewdari xml. (b/150051716)
Update dependensi
- Preferensi sekarang bergantung pada Fragmen
1.2.4. (aosp/1277317) - Dependensi
preference-ktxsekarang bergantung padaandroidx.core:core-ktx:1.1.0danandroidx.fragment:fragment-ktx:1.2.4, mencerminkan dependensi artefakpreferenceutama, dan memastikan bahwa mengupgradepreference-ktxakan mengupdate artefak utama dan artefak-ktxdependensi 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
PreferenceFragmentdan class lain yang menggunakan Fragment framework kini sudah tidak digunakan lagi; Anda sekarang harus menggunakanPreferenceFragmentCompatdan class *compat lainnya.- Anda kini dapat menetapkan
SummaryProviderpada 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 penyesuaianEditTextyang ditampilkan dalam dialog yang terkait setelah dialog diikat. Ini adalah pengganti langsung dari penggunaan atribut sepertiandroid:inputTypesecara 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
SeekBarPreferenceagar sesuai dengan spesifikasi Material. Silakan lihat log perubahan mendetail untuk mengetahui perubahanSeekBarPreferencelainnya. - 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.OnBindEditTextListenerPenambahan 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.