Create a hierarchy in code Part of Android Jetpack.
You can create a hierarchy programmatically in
onCreatePreferences().
The following example demonstrates a programmatic approach to creating the same
preference screen created through XML on the
overview page. To
create the screen programmatically, create each setting and set its relevant
properties, then add it to the preference screen:
Kotlin
overridefunonCreatePreferences(savedInstanceState:Bundle?,rootKey:String?){ valcontext=preferenceManager.context valscreen=preferenceManager.createPreferenceScreen(context) valnotificationPreference=SwitchPreferenceCompat(context) notificationPreference.key="notifications" notificationPreference.title="Enable message notifications" valfeedbackPreference=Preference(context) feedbackPreference.key="feedback" feedbackPreference.title="Send feedback" feedbackPreference.summary="Report technical issues or suggest new features" screen.addPreference(notificationPreference) screen.addPreference(feedbackPreference) preferenceScreen=screen }
Java
@Override publicvoidonCreatePreferences(BundlesavedInstanceState,StringrootKey){ Contextcontext=getPreferenceManager().getContext(); PreferenceScreenscreen=getPreferenceManager().createPreferenceScreen(context); SwitchPreferenceCompatnotificationPreference=newSwitchPreferenceCompat(context); notificationPreference.setKey("notifications"); notificationPreference.setTitle("Enable message notifications"); PreferencefeedbackPreference=newPreference(context); feedbackPreference.setKey("feedback"); feedbackPreference.setTitle("Send feedback"); feedbackPreference.setSummary("Report technical issues or suggest new features"); screen.addPreference(notificationPreference); screen.addPreference(feedbackPreference); setPreferenceScreen(screen); }
Adding a
PreferenceCategory is
similar. The following example demonstrates a programmatic approach to creating
the preference screen seen in
Organize your settings.
The children are added to the PreferenceCategory and not to the root
PreferenceScreen.
Kotlin
overridefunonCreatePreferences(savedInstanceState:Bundle?,rootKey:String?){ valcontext=preferenceManager.context valscreen=preferenceManager.createPreferenceScreen(context) valnotificationPreference=SwitchPreferenceCompat(context) notificationPreference.key="notifications" notificationPreference.title="Enable message notifications" valnotificationCategory=PreferenceCategory(context) notificationCategory.key="notifications_category" notificationCategory.title="Notifications" screen.addPreference(notificationCategory) notificationCategory.addPreference(notificationPreference) valfeedbackPreference=Preference(context) feedbackPreference.key="feedback" feedbackPreference.title="Send feedback" feedbackPreference.summary="Report technical issues or suggest new features" valhelpCategory=PreferenceCategory(context) helpCategory.key="help" helpCategory.title="Help" screen.addPreference(helpCategory) helpCategory.addPreference(feedbackPreference) preferenceScreen=screen }
Java
@Override publicvoidonCreatePreferences(BundlesavedInstanceState,StringrootKey){ Contextcontext=getPreferenceManager().getContext(); PreferenceScreenscreen=getPreferenceManager().createPreferenceScreen(context); SwitchPreferenceCompatnotificationPreference=newSwitchPreferenceCompat(context); notificationPreference.setKey("notifications"); notificationPreference.setTitle("Enable message notifications"); PreferenceCategorynotificationCategory=newPreferenceCategory(context); notificationCategory.setKey("notifications_category"); notificationCategory.setTitle("Notifications"); screen.addPreference(notificationCategory); notificationCategory.addPreference(notificationPreference); PreferencefeedbackPreference=newPreference(context); feedbackPreference.setKey("feedback"); feedbackPreference.setTitle("Send feedback"); feedbackPreference.setSummary("Report technical issues or suggest new features"); PreferenceCategoryhelpCategory=newPreferenceCategory(context); helpCategory.setKey("help"); helpCategory.setTitle("Help"); screen.addPreference(helpCategory); helpCategory.addPreference(feedbackPreference); setPreferenceScreen(screen); }