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">
<ph type="x-smartling-placeholder">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">
<ph type="x-smartling-placeholder">Abbildung 3 zeigt dieselben Einstellungen, aufgeteilt auf mehrere Bildschirme:
<ph type="x-smartling-placeholder">
<ph type="x-smartling-placeholder">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: