Mengatur setelan Anda Bagian dari Android Jetpack.
Layar setelan yang besar dan kompleks dapat menyulitkan pengguna untuk menemukan setelan tertentu yang ingin diubah. Library Preference menawarkan cara berikut untuk mengatur layar setelan dengan lebih baik.
Kategori Preference
Jika memiliki beberapa objek
Preference
yang terkait di satu
layar, Anda dapat mengelompokkannya menggunakan
PreferenceCategory
. PreferenceCategory
menampilkan judul kategori dan memisahkan
kategori secara visual.
Untuk menentukan PreferenceCategory
dalam XML, gabungkan tag Preference
dengan
PreferenceCategory
, seperti 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 memiliki banyak objek Preference
atau kategori yang berbeda, Anda
dapat menampilkannya di layar terpisah. Setiap layar adalah
PreferenceFragmentCompat
dengan hierarki terpisahnya sendiri. Objek Preference
di layar awal Anda kemudian dapat ditautkan ke sublayar yang berisi preferensi
terkait.
Gambar 2 menunjukkan hierarki sederhana yang berisi dua kategori: Messages dan Sync.
Gambar 3 menunjukkan kumpulan preferensi sama yang dibagi menjadi beberapa layar:
Untuk menautkan layar dengan Preference
, Anda dapat mendeklarasikan app:fragment
dalam XML atau
menggunakan
Preference.setFragment()
.
Luncurkan nama paket lengkap PreferenceFragmentCompat
saat
Preference
diketuk, seperti 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
yang melingkupinya.
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
<PreferenceScreen>
bertingkat tidak lagi didukung. Sebagai gantinya, gunakan objek
Fragment
bertingkat.
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, kami tidak
merekomendasikannya; sebagai gantinya, gunakan Fragments
seperti yang dijelaskan sebelumnya.
Untuk informasi selengkapnya tentang meluncurkan Activity
dari Preference
, lihat
Tindakan Preference.