PreferenceFragmentCompat
public
abstract
class
PreferenceFragmentCompat
extends Fragment
implements
PreferenceManager.OnPreferenceTreeClickListener,
PreferenceManager.OnDisplayPreferenceDialogListener,
PreferenceManager.OnNavigateToScreenListener,
DialogPreference.TargetFragment
| java.lang.Object | ||
| ↳ | androidx.fragment.app.Fragment | |
| ↳ | androidx.preference.PreferenceFragmentCompat | |
A PreferenceFragmentCompat is the entry point to using the Preference library. This
Fragment displays a hierarchy of Preference objects to the user. It also
handles persisting values to the device. To retrieve an instance of
SharedPreferences that the preference hierarchy in this fragment will
use by default, call
PreferenceManager.getDefaultSharedPreferences(android.content.Context) with a context
in the same package as this fragment.
You can define a preference hierarchy as an XML resource, or you can build a hierarchy in
code. In both cases you need to use a PreferenceScreen as the root component in your
hierarchy.
To inflate from XML, use the setPreferencesFromResource(int, String). An example
example XML resource is shown further down.
To build a hierarchy from code, use
PreferenceManager.createPreferenceScreen(Context) to create the root
PreferenceScreen. Once you have added other Preferences to this root scree
with PreferenceGroup.addPreference(Preference), you then need to set the screen as
the root screen in your hierarchy with setPreferenceScreen(PreferenceScreen).
As a convenience, this fragment implements a click listener for any preference in the
current hierarchy, see onPreferenceTreeClick(Preference).
Developer Guides
For more information about building a settings screen using the AndroidX Preference library, see Settings.
Sample Code
The following sample code shows a simple settings screen using an XML resource. The XML resource is as follows:
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory
android:title="@string/basic_preferences">
<Preference
android:key="preference"
android:title="@string/title_basic_preference"
android:summary="@string/summary_basic_preference"/>
<Preference
android:key="stylized"
android:title="@string/title_stylish_preference"
android:summary="@string/summary_stylish_preference"/>
<Preference
android:key="icon"
android:title="@string/title_icon_preference"
android:summary="@string/summary_icon_preference"
android:icon="@android:drawable/ic_menu_camera"/>
<Preference
android:key="single_line_title"
android:title="@string/title_single_line_title_preference"
android:summary="@string/summary_single_line_title_preference"
app:singleLineTitle="true"/>
</PreferenceCategory>
<PreferenceCategory
android:title="@string/widgets">
<CheckBoxPreference
android:key="checkbox"
android:title="@string/title_checkbox_preference"
android:summary="@string/summary_checkbox_preference"/>
<SwitchPreferenceCompat
android:key="switch"
android:title="@string/title_switch_preference"
android:summary="@string/summary_switch_preference"/>
<DropDownPreference
android:key="dropdown"
android:title="@string/title_dropdown_preference"
android:entries="@array/entries"
app:useSimpleSummaryProvider="true"
android:entryValues="@array/entry_values"/>
<SeekBarPreference
android:key="seekbar"
android:title="@string/title_seekbar_preference"
android:max="10"
android:defaultValue="5"/>
</PreferenceCategory>
<PreferenceCategory
android:title="@string/dialogs">
<EditTextPreference
android:key="edittext"
android:title="@string/title_edittext_preference"
app:useSimpleSummaryProvider="true"
android:dialogTitle="@string/dialog_title_edittext_preference"/>
<ListPreference
android:key="list"
android:title="@string/title_list_preference"
app:useSimpleSummaryProvider="true"
android:entries="@array/entries"
android:entryValues="@array/entry_values"
android:dialogTitle="@string/dialog_title_list_preference"/>
<MultiSelectListPreference
android:key="multi_select_list"
android:title="@string/title_multi_list_preference"
android:summary="@string/summary_multi_list_preference"
android:entries="@array/entries"
android:entryValues="@array/entry_values"
android:dialogTitle="@string/dialog_title_multi_list_preference"/>
</PreferenceCategory>
<PreferenceCategory
android:key="advanced"
android:title="@string/advanced_attributes"
app:initialExpandedChildrenCount="1">
<Preference
android:key="expandable"
android:title="@string/title_expandable_preference"
android:summary="@string/summary_expandable_preference"/>
<Preference
android:title="@string/title_intent_preference"
android:summary="@string/summary_intent_preference">
<intent android:action="android.intent.action.VIEW"
android:data="http://www.android.com"/>
</Preference>
<SwitchPreferenceCompat
android:key="parent"
android:title="@string/title_parent_preference"
android:summary="@string/summary_parent_preference"/>
<SwitchPreferenceCompat
android:key="child"
android:dependency="parent"
android:title="@string/title_child_preference"
android:summary="@string/summary_child_preference"/>
<SwitchPreferenceCompat
android:key="toggle_summary"
android:title="@string/title_toggle_summary_preference"
android:summaryOn="@string/summary_on_toggle_summary_preference"
android:summaryOff="@string/summary_off_toggle_summary_preference"/>
<Preference
android:key="copyable"
android:title="@string/title_copyable_preference"
android:summary="@string/summary_copyable_preference"
android:selectable="false"
app:enableCopying="true"/>
</PreferenceCategory>
</PreferenceScreen>
The fragment that loads the XML resource is as follows:
public static class DemoFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
// Load the preferences from an XML resource
setPreferencesFromResource(R.xml.preferences, rootKey);
}
}
See also:
Summary
Nested classes | |
|---|---|
interface |
PreferenceFragmentCompat.OnPreferenceDisplayDialogCallback
Interface that the fragment's containing activity should implement to be able to process preference items that wish to display a dialog. |
interface |
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback
Interface that the fragment's containing activity should implement to be able to process preference items that wish to switch to a specified fragment. |
interface |
PreferenceFragmentCompat.OnPreferenceStartScreenCallback
Interface that the fragment's containing activity should implement to be able to process preference items that wish to switch to a new screen of preferences. |
Constants | |
|---|---|
String |
ARG_PREFERENCE_ROOT
Fragment argument used to specify the tag of the desired root |
Public constructors | |
|---|---|
PreferenceFragmentCompat()
|
|
Public methods | |
|---|---|
void
|
addPreferencesFromResource(int preferencesResId)
Inflates the given XML resource and adds the preference hierarchy to the current preference hierarchy. |
<T extends Preference>
T
|
findPreference(CharSequence key)
Finds a |
final
RecyclerView
|
getListView()
|
PreferenceManager
|
getPreferenceManager()
Returns the |
PreferenceScreen
|
getPreferenceScreen()
Gets the root of the preference hierarchy that this fragment is showing. |
void
|
onCreate(Bundle savedInstanceState)
Called to do initial creation of a fragment. |
RecyclerView.LayoutManager
|
onCreateLayoutManager()
Called from |
abstract
void
|
onCreatePreferences(Bundle savedInstanceState, String rootKey)
Called during <code translate="no" dir="ltr" |