Mengatur setelan Anda Bagian dari Android Jetpack.
Layar setelan yang besar dan kompleks dapat menyulitkan pengguna untuk menemukan pengaturan spesifik yang ingin mereka ubah. Pustaka Preference menawarkan cara berikut untuk mengatur layar setelan dengan lebih baik.
Kategori Preference
Jika Anda memiliki beberapa
Objek Preference
pada satu objek
Anda dapat mengelompokkannya menggunakan
PreferenceCategory
. J
PreferenceCategory
menampilkan judul kategori dan memisahkan secara visual
kategori.
Untuk menentukan PreferenceCategory
dalam XML, gabungkan tag Preference
dengan
PreferenceCategory
, sebagai berikut:
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"> <PreferenceCategory app:key="notifications_category" app:title="Notifications"> <SwitchPreferenceCompat app:key="notifications" app:title="Enable message notifications"/> </PreferenceCategory> <PreferenceCategory app:key="help_category" app:title="Help"> <Preference app:key="feedback" app:summary="Report technical issues or suggest new features" app:title="Send feedback"/> </PreferenceCategory> </PreferenceScreen>
Hasilnya akan terlihat seperti berikut:
![Gambar yang menampilkan preferensi dengan kategori](https://developer.android.google.cn/static/develop/ui/views/components/settings/images/settings-preferencecategory.png?authuser=7&hl=id)
Membagi hierarki menjadi beberapa layar
Jika Anda memiliki banyak objek Preference
atau kategori yang berbeda, Anda
dapat menampilkannya di layar terpisah. Setiap layar adalah
PreferenceFragmentCompat
dengan hierarkinya sendiri yang terpisah. Preference
objek
di layar awal, Anda dapat menautkan ke sublayar yang berisi
preferensi Anda.
Gambar 2 menunjukkan hierarki sederhana yang berisi dua kategori: Pesan dan Sinkronisasi.
![Gambar yang menampilkan layar preferensi dengan hierarki](https://developer.android.google.cn/static/develop/ui/views/components/settings/images/settings-simplehierarchy.png?authuser=7&hl=id)
Gambar 3 menunjukkan kumpulan preferensi yang sama yang dibagi menjadi beberapa layar:
![Gambar yang menampilkan pemisahan hierarki menjadi beberapa layar](https://developer.android.google.cn/static/develop/ui/views/components/settings/images/settings-screens.png?authuser=7&hl=id)
Untuk menautkan layar dengan Preference
, Anda dapat mendeklarasikan app:fragment
dalam XML atau
Anda bisa menggunakan
Preference.setFragment()
Luncurkan nama paket lengkap PreferenceFragmentCompat
saat
Preference
diketuk, seperti yang ditunjukkan dalam contoh berikut:
<Preference app:fragment="com.example.SyncFragment" .../>
Saat pengguna mengetuk Preference
dengan Fragment
yang terkait, metode
antarmuka
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback.onPreferenceStartFragment()
akan dipanggil. Metode ini adalah tempat Anda menangani penayangan layar baru dan tempat
layar diimplementasikan di Activity
sekitar.
Implementasi standar terlihat seperti berikut ini:
Kotlin
class MyActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPreferenceStartFragmentCallback { ... override fun onPreferenceStartFragment(caller: PreferenceFragmentCompat, pref: Preference): Boolean { // Instantiate the new Fragment. val args = pref.extras val fragment = supportFragmentManager.fragmentFactory.instantiate( classLoader, pref.fragment) fragment.arguments = args fragment.setTargetFragment(caller, 0) // Replace the existing Fragment with the new Fragment. supportFragmentManager.beginTransaction() .replace(R.id.settings_container, fragment) .addToBackStack(null) .commit() return true } }
Java
public class MyActivity extends AppCompatActivity implements PreferenceFragmentCompat.OnPreferenceStartFragmentCallback { ... @Override public boolean onPreferenceStartFragment(PreferenceFragmentCompat caller, Preference pref) { // Instantiate the new Fragment. final Bundle args = pref.getExtras(); final Fragment fragment = getSupportFragmentManager().getFragmentFactory().instantiate( getClassLoader(), pref.getFragment()); fragment.setArguments(args); fragment.setTargetFragment(caller, 0); // Replace the existing Fragment with the new Fragment. getSupportFragmentManager().beginTransaction() .replace(R.id.settings_container, fragment) .addToBackStack(null) .commit(); return true; } }
PreferenceScreens
Mendeklarasikan hierarki bertingkat dalam resource XML yang sama menggunakan elemen
<PreferenceScreen>
tidak lagi didukung. Menggunakan objek Fragment
bertingkat
sebagai gantinya.
Menggunakan Activities terpisah
Jika perlu melakukan banyak penyesuaian di setiap layar, atau jika ingin transisi
Activity
penuh antar-layar, Anda dapat menggunakan Activity
terpisah untuk
setiap PreferenceFragmentCompat
. Dengan begitu, Anda dapat sepenuhnya menyesuaikan setiap
Activity
dan layar setelannya yang sesuai. Untuk sebagian besar aplikasi, kita tidak
merekomendasikan hal ini; sebagai gantinya, gunakan Fragments
seperti yang dijelaskan sebelumnya.
Untuk informasi selengkapnya tentang meluncurkan Activity
dari Preference
, lihat
Tindakan preferensi.