belongs to Maven artifact com.android.support:preference-v7:28.0.0-alpha1
PreferenceFragment
public
abstract
class
PreferenceFragment
extends Fragment
implements
PreferenceManager.OnPreferenceTreeClickListener,
PreferenceManager.OnDisplayPreferenceDialogListener,
PreferenceManager.OnNavigateToScreenListener,
DialogPreference.TargetFragment
java.lang.Object | ||
↳ | android.app.Fragment | |
↳ | android.support.v14.preference.PreferenceFragment |
Known Direct Subclasses |
Known Indirect Subclasses |
Shows a hierarchy of Preference
objects as
lists. These preferences will
automatically save to SharedPreferences
as the user interacts with
them. To retrieve an instance of SharedPreferences
that the
preference hierarchy in this fragment will use, call
getDefaultSharedPreferences(android.content.Context)
with a context in the same package as this fragment.
Furthermore, the preferences shown will follow the visual style of system preferences. It is easy to create a hierarchy of preferences (that can be shown on multiple screens) via XML. For these reasons, it is recommended to use this fragment (as a superclass) to deal with preferences in applications.
A PreferenceScreen
object should be at the top of the preference
hierarchy. Furthermore, subsequent PreferenceScreen
in the hierarchy
denote a screen break--that is the preferences contained within subsequent
PreferenceScreen
should be shown on another screen. The preference
framework handles this by calling onNavigateToScreen(PreferenceScreen)
.
The preference hierarchy can be formed in multiple ways:
Activities
that each specify its own
preferences in an XML file via Activity
meta-data
PreferenceScreen
To inflate from XML, use the addPreferencesFromResource(int)
. The
root element should be a PreferenceScreen
. Subsequent elements can point
to actual Preference
subclasses. As mentioned above, subsequent
PreferenceScreen
in the hierarchy will result in the screen break.
To specify an object hierarchy rooted with PreferenceScreen
, use
setPreferenceScreen(PreferenceScreen)
.
As a convenience, this fragment implements a click listener for any
preference in the current hierarchy, see
onPreferenceTreeClick(Preference)
.
Developer Guides
For information about using PreferenceFragment
,
read the Settings
guide.
Sample Code
The following sample code shows a simple preference fragment that is populated from a resource. The resource it loads is:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/root_title"> <Preference android:key="basic_preference" android:title="@string/title_basic_preference" android:summary="@string/summary_basic_preference" /> <Preference android:key="stylish_preference" android:title="@string/title_stylish_preference" android:summary="@string/summary_stylish_preference" /> <Preference android:key="preference_with_icon" android:title="Preference with icon" android:summary="This preference has an icon" android:icon="@android:drawable/ic_menu_camera" /> <PreferenceCategory android:title="@string/inline_preferences"> <CheckBoxPreference android:key="checkbox_preference" android:title="@string/title_checkbox_preference" android:summary="@string/summary_checkbox_preference" /> <SwitchPreference android:key="switch_preference" android:title="Switch preference" android:summary="This is a switch" /> <DropDownPreference android:key="dropdown_preference" android:title="@string/title_dropdown_preference" android:summary="@string/summary_dropdown_preference" android:entries="@array/entries_list_preference" android:entryValues="@array/entryvalues_list_preference" /> </PreferenceCategory> <PreferenceCategory android:title="@string/dialog_based_preferences"> <EditTextPreference android:key="edittext_preference" android:title="@string/title_edittext_preference" android:summary="@string/summary_edittext_preference" android:dialogTitle="@string/dialog_title_edittext_preference" /> <ListPreference android:key="list_preference" android:title="@string/title_list_preference" android:summary="@string/summary_list_preference" android:entries="@array/entries_list_preference" android:entryValues="@array/entryvalues_list_preference" android:dialogTitle="@string/dialog_title_list_preference" /> <MultiSelectListPreference android:key="multi_select_list_preference" android:title="@string/title_multi_list_preference" android:summary="@string/summary_multi_list_preference" android:entries="@array/entries_list_preference" android:entryValues="@array/entryvalues_list_preference" android:dialogTitle="@string/dialog_title_multi_list_preference" /> </PreferenceCategory> <PreferenceCategory android:title="@string/launch_preferences"> <!-- This PreferenceScreen tag serves as a screen break (similar to page break in word processing). Like for other preference types, we assign a key here so it is able to save and restore its instance state. --> <PreferenceScreen android:key="screen_preference" android:title="@string/title_screen_preference" android:summary="@string/summary_screen_preference"> <!-- You can place more preferences here that will be shown on the next screen. --> <CheckBoxPreference android:key="next_screen_checkbox_preference" android:title="@string/title_next_screen_toggle_preference" android:summary="@string/summary_next_screen_toggle_preference" /> </PreferenceScreen> <PreferenceScreen 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" /> </PreferenceScreen> </PreferenceCategory> <PreferenceCategory android:title="@string/preference_attributes"> <CheckBoxPreference android:key="parent_checkbox_preference" android:title="@string/title_parent_preference" android:summary="@string/summary_parent_preference" /> <!-- The visual style of a child is defined by this styled theme attribute. --> <CheckBoxPreference android:key="child_checkbox_preference" android:dependency="parent_checkbox_preference" android:layout="?android:attr/preferenceLayoutChild" android:title="@string/title_child_preference" android:summary="@string/summary_child_preference" /> </PreferenceCategory> </PreferenceScreen>
The fragment implementation itself simply populates the preferences when created. Note that the preferences framework takes care of loading the current values out of the app preferences and writing them when changed:
public static class PrefsFragment extends PreferenceFragment { @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 |
PreferenceFragment.OnPreferenceDisplayDialogCallback
|
interface |
PreferenceFragment.OnPreferenceStartFragmentCallback
Interface that PreferenceFragment's containing activity should implement to be able to process preference items that wish to switch to a specified fragment. |
interface |
PreferenceFragment.OnPreferenceStartScreenCallback
Interface that PreferenceFragment's containing activity should implement to be able to process preference items that wish to switch to a new screen of preferences. |
XML attributes | |
---|---|
PreferenceFragment_android_divider |
|
PreferenceFragment_android_dividerHeight |
Constants | |
---|---|
String |
ARG_PREFERENCE_ROOT
Fragment argument used to specify the tag of the desired root
|
Inherited constants |
---|
From
interface
android.content.ComponentCallbacks2
|
Public constructors | |
---|---|
PreferenceFragment()
|
Public methods | |
---|---|
void
|
addPreferencesFromResource(int preferencesResId)
Inflates the given XML resource and adds the preference hierarchy to the current preference hierarchy. |
Preference
|
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
|
onActivityCreated(Bundle savedInstanceState)
|
void
|
onCreate(Bundle savedInstanceState)
|
RecyclerView.LayoutManager
|
onCreateLayoutManager()
Called from |
abstract
void
|
onCreatePreferences(Bundle savedInstanceState, String rootKey)
Called during |
RecyclerView
|
onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState)
Creates the |
View
|
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
|
void
|
onDestroyView()
|
void
|
onDisplayPreferenceDialog(Preference preference)
Called when a preference in the tree requests to display a dialog. |
void
|
onNavigateToScreen(PreferenceScreen preferenceScreen)
Called by
|
boolean
|
onPreferenceTreeClick(Preference preference)
Called when a preference in the tree rooted at this
|
void
|
onSaveInstanceState(Bundle outState)
|
void
|
onStart()
|
void
|
onStop()
|
void
|
onViewCreated(View view, Bundle savedInstanceState)
|
void
|
scrollToPreference(Preference preference)
|
void
|
scrollToPreference(String key)
|
void
|
setDivider(Drawable divider)
Sets the drawable that will be drawn between each item in the list. |
void
|
setDividerHeight(int height)
Sets the height of the divider that will be drawn between each item in the list. |
void
|
setPreferenceScreen(PreferenceScreen preferenceScreen)
Sets the root of the preference hierarchy that this fragment is showing. |
void
|
setPreferencesFromResource(int preferencesResId, String key)
Inflates the given XML resource and replaces the current preference hierarchy (if any) with
the preference hierarchy rooted at |
Protected methods | |
---|---|
Adapter
|
onCreateAdapter(PreferenceScreen preferenceScreen)
Creates the root adapter. |
Inherited methods | |
---|---|
From
class
android.app.Fragment
| |
From
class
java.lang.Object
| |
From
interface
android.content.ComponentCallbacks2
| |
From
interface
android.view.View.OnCreateContextMenuListener
| |
From
interface
android.support.v7.preference.PreferenceManager.OnPreferenceTreeClickListener
| |
From
interface
android.support.v7.preference.PreferenceManager.OnDisplayPreferenceDialogListener
| |
From
interface
android.support.v7.preference.PreferenceManager.OnNavigateToScreenListener
| |
From
interface
android.support.v7.preference.DialogPreference.TargetFragment
| |
From
interface
android.content.ComponentCallbacks
|
XML attributes
PreferenceFragment_android_divider
Related methods:
PreferenceFragment_android_dividerHeight
Related methods:
Constants
ARG_PREFERENCE_ROOT
String ARG_PREFERENCE_ROOT
Fragment argument used to specify the tag of the desired root
PreferenceScreen
object.
Constant Value: "android.support.v7.preference.PreferenceFragmentCompat.PREFERENCE_ROOT"
Public constructors
Public methods
addPreferencesFromResource
void addPreferencesFromResource (int preferencesResId)
Inflates the given XML resource and adds the preference hierarchy to the current preference hierarchy.
Parameters | |
---|---|
preferencesResId |
int : The XML resource ID to inflate.
|
findPreference
Preference findPreference (CharSequence key)
Finds a Preference
based on its key.
Parameters | |
---|---|
key |
CharSequence : The key of the preference to retrieve. |
Returns | |
---|---|
Preference |
The Preference with the key, or null. |
See also:
getPreferenceManager
PreferenceManager getPreferenceManager ()
Returns the PreferenceManager
used by this fragment.
Returns | |
---|---|
PreferenceManager |
The PreferenceManager .
|
getPreferenceScreen
PreferenceScreen getPreferenceScreen ()
Gets the root of the preference hierarchy that this fragment is showing.
Returns | |
---|---|
PreferenceScreen |
The PreferenceScreen that is the root of the preference
hierarchy.
|
onActivityCreated
void onActivityCreated (Bundle savedInstanceState)
Parameters | |
---|---|
savedInstanceState |
Bundle |
onCreateLayoutManager
RecyclerView.LayoutManager onCreateLayoutManager ()
Called from onCreateRecyclerView(LayoutInflater, ViewGroup, Bundle)
to create the
RecyclerView.LayoutManager
for the created
RecyclerView
.
Returns | |
---|---|
RecyclerView.LayoutManager |
A new RecyclerView.LayoutManager instance.
|
onCreatePreferences
void onCreatePreferences (Bundle savedInstanceState, String rootKey)
Called during onCreate(Bundle)
to supply the preferences for this fragment.
Subclasses are expected to call setPreferenceScreen(PreferenceScreen)
either
directly or via helper methods such as addPreferencesFromResource(int)
.
Parameters | |
---|---|
savedInstanceState |
Bundle : If the fragment is being re-created from
a previous saved state, this is the state. |
rootKey |
String : If non-null, this preference fragment should be rooted at the
PreferenceScreen with this key.
|
onCreateRecyclerView
RecyclerView onCreateRecyclerView (LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState)
Creates the RecyclerView
used to display the preferences.
Subclasses may override this to return a customized
RecyclerView
.
Parameters | |
---|---|
inflater |
LayoutInflater : The LayoutInflater object that can be used to inflate the
RecyclerView . |
parent |
ViewGroup : The parent View that the RecyclerView will be attached to.
This method should not add the view itself, but this can be used to generate
the LayoutParams of the view. |
savedInstanceState |
Bundle : If non-null, this view is being re-constructed from a previous
saved state as given here |
Returns | |
---|---|
RecyclerView |
A new RecyclerView object to be placed into the view hierarchy |
onCreateView
View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
Parameters | |
---|---|
inflater |
LayoutInflater |
container |
ViewGroup |
savedInstanceState |
Bundle |
Returns | |
---|---|
View |
onDestroyView
void onDestroyView ()
onDisplayPreferenceDialog
void onDisplayPreferenceDialog (Preference preference)
Called when a preference in the tree requests to display a dialog. Subclasses should override this method to display custom dialogs or to handle dialogs for custom preference classes.
Parameters | |
---|---|
preference |
Preference : The Preference object requesting the dialog.
|
onNavigateToScreen
void onNavigateToScreen (PreferenceScreen preferenceScreen)
Called by
onClick()
in order to navigate to a
new screen of preferences. Calls
onPreferenceStartScreen(PreferenceFragment, PreferenceScreen)
if the target fragment or containing activity implements
PreferenceFragment.OnPreferenceStartScreenCallback
.
Parameters | |
---|---|
preferenceScreen |
PreferenceScreen : The PreferenceScreen to
navigate to.
|
onPreferenceTreeClick
boolean onPreferenceTreeClick (Preference preference)
Called when a preference in the tree rooted at this
PreferenceScreen
has been clicked.
Parameters | |
---|---|
preference |
Preference : The preference that was clicked. |
Returns | |
---|---|
boolean |
Whether the click was handled. |
onStart
void onStart ()
onStop
void onStop ()
onViewCreated
void onViewCreated (View view, Bundle savedInstanceState)
Parameters | |
---|---|
view |
View |
savedInstanceState |
Bundle |
scrollToPreference
void scrollToPreference (Preference preference)
Parameters | |
---|---|
preference |
Preference |
scrollToPreference
void scrollToPreference (String key)
Parameters | |
---|---|
key |
String |
setDivider
void setDivider (Drawable divider)
Sets the drawable that will be drawn between each item in the list.
Note: If the drawable does not have an intrinsic
height, you should also call setDividerHeight(int)
.
Related XML Attributes:
Parameters | |
---|---|
divider |
Drawable : the drawable to use |
setDividerHeight
void setDividerHeight (int height)
Sets the height of the divider that will be drawn between each item in the list. Calling
this will override the intrinsic height as set by setDivider(Drawable)
Related XML Attributes:
Parameters | |
---|---|
height |
int : The new height of the divider in pixels. |
setPreferenceScreen
void setPreferenceScreen (PreferenceScreen preferenceScreen)
Sets the root of the preference hierarchy that this fragment is showing.
Parameters | |
---|---|
preferenceScreen |
PreferenceScreen : The root PreferenceScreen of the preference hierarchy.
|
setPreferencesFromResource
void setPreferencesFromResource (int preferencesResId, String key)
Inflates the given XML resource and replaces the current preference hierarchy (if any) with
the preference hierarchy rooted at key
.
Parameters | |
---|---|
preferencesResId |
int : The XML resource ID to inflate. |
key |
String : The preference key of the PreferenceScreen
to use as the root of the preference hierarchy, or null to use the root
PreferenceScreen .
|
Protected methods
onCreateAdapter
Adapter onCreateAdapter (PreferenceScreen preferenceScreen)
Creates the root adapter.
Parameters | |
---|---|
preferenceScreen |
PreferenceScreen : Preference screen object to create the adapter for. |
Returns | |
---|---|
Adapter |
An adapter that contains the preferences contained in this PreferenceScreen .
|
Interfaces
Classes