| java.lang.Object | ||
| ↳ | android.app.Fragment | |
| ↳ | android.preference.PreferenceFragment | |
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 showing these other screens from the preference hierarchy.
 
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 Intent to query Activities that each
 ha
ve preferences, use addPreferencesFromIntent(Intent). Each
 Activity can specify meta-data in the manifest (via the key
 METADATA_KEY_PREFERENCES) that points to an XML
 resource. These XML resources will be inflated into a single preference
 hierarchy and shown by this fragment.
 
 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(PreferenceScreen, Preference).
 
 
For information about using PreferenceFragment,
 read the Settings
 guide.
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">
    <PreferenceCategory
            android:title="@string/inline_preferences">
        <CheckBoxPreference
                android:key="checkbox_preference"
                android:title="@string/title_checkbox_preference"
                android:summary="@string/summary_checkbox_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" />
    </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 onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.preferences);
    }
}
  | Nested Classes | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| PreferenceFragment.OnPreferenceStartFragmentCallback | Interface that PreferenceFragment's containing activity should implement to be able to process preference items that wish to switch to a new fragment. | ||||||||||
| [Expand] Inherited Constants | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|  From interface
android.content.ComponentCallbacks2 | |||||||||||
| Public Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Adds preferences from activities that match the given  Intent. | |||||||||||
| Inflates the given XML resource and adds the preference hierarchy to the current
 preference hierarchy. | |||||||||||
| Finds a  Preferencebased on its key. | |||||||||||
| Returns the  PreferenceManagerused by this fragment. | |||||||||||
| Gets the root of the preference hierarchy that this fragment is showing. | |||||||||||
| Called when the fragment's activity has been created and this
 fragment's view hierarchy instantiated. | |||||||||||
| Receive the result from a previous call to
  startActivityForResult(Intent, int). | |||||||||||
| Called to do initial creation of a fragment. | |||||||||||
| Called to have the fragment instantiate its user interface view. | |||||||||||
| Called when the fragment is no longer in use. | |||||||||||
| Called when the view previously created by  onCreateView(LayoutInflater, ViewGroup, Bundle)has
 been detached from the fragment. | |||||||||||
| Called to ask the fragment to save its current dynamic state, so it
 can later be reconstructed in a new instance of its process is
 restarted. | |||||||||||
| Called when the Fragment is visible to the user. | |||||||||||
| Called when the Fragment is no longer started. | |||||||||||
| Sets the root of the preference hierarchy that this fragment is showing. | |||||||||||
| [Expand] Inherited Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|  From class
  android.app.Fragment | |||||||||||
|  From class
  java.lang.Object | |||||||||||
|  From interface
  android.content.ComponentCallbacks | |||||||||||
|  From interface
  android.content.ComponentCallbacks2 | |||||||||||
|  From interface
  android.view.View.OnCreateContextMenuListener | |||||||||||
Inflates the given XML resource and adds the preference hierarchy to the current preference hierarchy.
| preferencesResId | The XML resource ID to inflate. | 
|---|
Finds a Preference based on its key.
| key | The key of the preference to retrieve. | 
|---|
Preference with the key, or null.Returns the PreferenceManager used by this fragment.
PreferenceManager.
Gets the root of the preference hierarchy that this fragment is showing.
PreferenceScreen that is the root of the preference
         hierarchy.
Called when the fragment's activity has been created and this
 fragment's view hierarchy instantiated.  It can be used to do final
 initialization once these pieces are in place, such as retrieving
 views or restoring state.  It is also useful for fragments that use
 setRetainInstance(boolean) to retain their instance,
 as this callback tells the fragment when it is fully associated with
 the new activity instance.  This is called after onCreateView(LayoutInflater, ViewGroup, Bundle)
 and before onViewStateRestored(Bundle).
| savedInstanceState | If the fragment is being re-created from a previous saved state, this is the state. | 
|---|
Receive the result from a previous call to
 startActivityForResult(Intent, int).  This follows the
 related Activity API as described there in
 onActivityResult(int, int, Intent).
| requestCode | The integer request code originally supplied to startActivityForResult(), allowing you to identify who this result came from. | 
|---|---|
| resultCode | The integer result code returned by the child activity through its setResult(). | 
| data | An Intent, which can return result data to the caller (various data can be attached to Intent "extras"). | 
Called to do initial creation of a fragment.  This is called after
 onAttach(Activity) and before
 onCreateView(LayoutInflater, ViewGroup, Bundle).
 
 
Note that this can be called while the fragment's activity is
 still in the process of being created.  As such, you can not rely
 on things like the activity's content view hierarchy being initialized
 at this point.  If you want to do work once the activity itself is
 created, see onActivityCreated(Bundle).
| savedInstanceState | If the fragment is being re-created from a previous saved state, this is the state. | 
|---|
Called to have the fragment instantiate its user interface view.
 This is optional, and non-graphical fragments can return null (which
 is the default implementation).  This will be called between
 onCreate(Bundle) and onActivityCreated(Bundle).
 
 
If you return a View from here, you will later be called in
 onDestroyView() when the view is being released.
| inflater | The LayoutInflater object that can be used to inflate any views in the fragment, | 
|---|---|
| container | If non-null, this is the parent view that the fragment's UI should be attached to. The fragment should not add the view itself, but this can be used to generate the LayoutParams of the view. | 
| savedInstanceState | If non-null, this fragment is being re-constructed from a previous saved state as given here. | 
Called when the fragment is no longer in use.  This is called
 after onStop() and before onDetach().
Called when the view previously created by onCreateView(LayoutInflater, ViewGroup, Bundle) has
 been detached from the fragment.  The next time the fragment needs
 to be displayed, a new view will be created.  This is called
 after onStop() and before onDestroy().  It is called
 regardless of whether onCreateView(LayoutInflater, ViewGroup, Bundle) returned a
 non-null view.  Internally it is called after the view's state has
 been saved but before it has been removed from its parent.
Called to ask the fragment to save its current dynamic state, so it
 can later be reconstructed in a new instance of its process is
 restarted.  If a new instance of the fragment later needs to be
 created, the data you place in the Bundle here will be available
 in the Bundle given to onCreate(Bundle),
 onCreateView(LayoutInflater, ViewGroup, Bundle), and
 onActivityCreated(Bundle).
 
This corresponds to Activity.onSaveInstanceState(Bundle) and most of the discussion there
 applies here as well.  Note however: this method may be called
 at any time before onDestroy().  There are many situations
 where a fragment may be mostly torn down (such as when placed on the
 back stack with no UI showing), but its state will not be saved until
 its owning activity actually needs to save its state.
| outState | Bundle in which to place your saved state. | 
|---|
Called when the Fragment is visible to the user.  This is generally
 tied to Activity.onStart of the containing
 Activity's lifecycle.
Called when the Fragment is no longer started.  This is generally
 tied to Activity.onStop of the containing
 Activity's lifecycle.
Sets the root of the preference hierarchy that this fragment is showing.
| preferenceScreen | The root PreferenceScreenof the preference hierarchy. | 
|---|