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:
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 3 menunjukkan kumpulan preferensi yang sama yang dibagi menjadi beberapa layar:
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.