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);
}

Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Last updated 2026年02月26日 UTC.