Einstellungen organisieren Teil von Android Jetpack
Große und komplexe Bildschirme mit Einstellungen können es Nutzern erschweren, ein Einstellung auswählen, die sie ändern möchten. Die Einstellungsbibliothek bietet die um Ihre Einstellungsbildschirme besser zu organisieren.
Einstellungskategorien
Wenn Sie mehrere ähnliche
Preference
-Objekte in einem einzelnen
können Sie sie mithilfe eines
PreferenceCategory
A
PreferenceCategory
zeigt einen Kategorietitel an und trennt die
Kategorie.
Um ein PreferenceCategory
in XML zu definieren, umschließen Sie die Preference
-Tags mit einem
PreferenceCategory
so:
<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>
Das Ergebnis sieht so aus:
<ph type="x-smartling-placeholder">![Ein Bild, das Einstellungen mit Kategorien zeigt](https://developer.android.google.cn/static/develop/ui/views/components/settings/images/settings-preferencecategory.png?authuser=0000&hl=de)
Hierarchien in mehrere Bildschirme aufteilen
Bei einer großen Anzahl von Preference
-Objekten oder unterschiedlichen Kategorien
auf separaten Bildschirmen angezeigt werden. Jeder Bildschirm ist ein
PreferenceFragmentCompat
mit einer eigenen separaten Hierarchie. Preference
Objekte
auf Ihrem Startbildschirm können dann mit Subscreens verknüpft werden, die ähnliche
Einstellungen.
Abbildung 2 zeigt eine einfache Hierarchie, die zwei Kategorien enthält: Nachrichten und Synchronisierung:
<ph type="x-smartling-placeholder">![Ein Bild, auf dem ein bevorzugter Bildschirm mit Hierarchien zu sehen ist](https://developer.android.google.cn/static/develop/ui/views/components/settings/images/settings-simplehierarchy.png?authuser=0000&hl=de)
Abbildung 3 zeigt dieselben Einstellungen, aufgeteilt auf mehrere Bildschirme:
<ph type="x-smartling-placeholder">![Ein Bild, das eine Hierarchie zeigt, die auf mehrere Bildschirme aufgeteilt ist](https://developer.android.google.cn/static/develop/ui/views/components/settings/images/settings-screens.png?authuser=0000&hl=de)
Um Bildschirme mit einem Preference
zu verknüpfen, kannst du ein app:fragment
in XML oder
können Sie
Preference.setFragment()
Starten Sie den vollständigen Paketnamen von PreferenceFragmentCompat
, wenn
wird Preference
angetippt, wie im folgenden Beispiel gezeigt:
<Preference app:fragment="com.example.SyncFragment" .../>
Wenn ein Nutzer auf eine Preference
mit einer verknüpften Fragment
tippt, wird die Oberfläche
Methode
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback.onPreferenceStartFragment()
aufgerufen wird. Bei dieser Methode
zeigen Sie den neuen Bildschirm an
wird der Bildschirm in der umgebenden Activity
implementiert.
Eine typische Implementierung sieht etwa so aus:
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; } }
Bildschirmeinstellungen
Verschachtelte Hierarchien innerhalb derselben XML-Ressource mithilfe einer verschachtelten
<PreferenceScreen>
wird nicht mehr unterstützt. Verschachtelte Fragment
-Objekte verwenden
.
Separate Aktivitäten verwenden
Wenn Sie die einzelnen Bildschirme stark anpassen müssen oder eine vollständige
Activity
-Übergänge zwischen Bildschirmen. Du kannst ein separates Activity
für
PreferenceFragmentCompat
. So können Sie jedes einzelne Element
Activity
und der entsprechende Einstellungsbildschirm. Bei den meisten Apps
empfehlen dies: Verwende stattdessen Fragments
wie zuvor beschrieben.
Weitere Informationen zum Starten eines Activity
aus einem Preference
finden Sie unter
Aktionen für Einstellungen: