android.preference
Class PreferenceFragment

java.lang.Object
  extended by android.app.Fragment
      extended by android.preference.PreferenceFragment
All Implemented Interfaces:
ComponentCallbacks, ComponentCallbacks2, View.OnCreateContextMenuListener
Direct Known Subclasses:
InputMethodSettingsFragment

public abstract class PreferenceFragment
extends Fragment

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 PreferenceManager.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:

  • From an XML file specifying the hierarchy
  • From different Activities that each specify its own preferences in an XML file via Activity meta-data
  • From an object hierarchy rooted with 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 have preferences, use addPreferencesFromIntent(android.content.Intent). Each Activity can specify meta-data in the manifest (via the key PreferenceManager.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).

    Sample Code

    The following sample code shows a simple preference fragment that is populated from a resource. The resource it loads is:

    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:

    See Also:
    Preference, PreferenceScreen

    Nested Class Summary
    static interface 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.
     
    Nested classes/interfaces inherited from class android.app.Fragment
    Fragment.InstantiationException, Fragment.SavedState
     
    Field Summary
     
    Fields inherited from interface android.content.ComponentCallbacks2
    TRIM_MEMORY_BACKGROUND, TRIM_MEMORY_COMPLETE, TRIM_MEMORY_MODERATE, TRIM_MEMORY_UI_HIDDEN
     
    Constructor Summary
    PreferenceFragment()
               
     
    Method Summary
     void addPreferencesFromIntent(Intent intent)
              Adds preferences from activities that match the given Intent.
     void addPreferencesFromResource(int preferencesResId)
              Inflates the given XML resource and adds the preference hierarchy to the current preference hierarchy.
     Preference findPreference(java.lang.CharSequence key)
              Finds a Preference based on its key.
     ListView getListView()
               
     PreferenceManager getPreferenceManager()
              Returns the PreferenceManager used by this fragment.
     PreferenceScreen getPreferenceScreen()
              Gets the root of the preference hierarchy that this fragment is showing.
     void onActivityCreated(Bundle savedInstanceState)
              Called when the fragment's activity has been created and this fragment's view hierarchy instantiated.
     void onActivityResult(int requestCode, int resultCode, Intent data)
              Receive the result from a previous call to Fragment.startActivityForResult(Intent, int).
     void onCreate(Bundle savedInstanceState)
              Called to do initial creation of a fragment.
     View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
              Called to have the fragment instantiate its user interface view.
     void onDestroy()
              Called when the fragment is no longer in use.
     void onDestroyView()
              Called when the view previously created by Fragment.onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle) has been detached from the fragment.
     boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference)
              Called when a preference in the tree rooted at this PreferenceScreen has been clicked.
     void onSaveInstanceState(Bundle outState)
              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.
     void onStart()
              Called when the Fragment is visible to the user.
     void onStop()
              Called when the Fragment is no longer started.
     void setPreferenceScreen(PreferenceScreen preferenceScreen)
              Sets the root of the preference hierarchy that this fragment is showing.
     
    Methods inherited from class android.app.Fragment
    dump, equals, getActivity, getArguments, getFragmentManager, getId, getLayoutInflater, getLoaderManager, getResources, getRetainInstance, getString, getString, getTag, getTargetFragment, getTargetRequestCode, getText, getUserVisibleHint, getView, hashCode, instantiate, instantiate, isAdded, isDetached, isHidden, isInLayout, isRemoving, isResumed, isVisible, onAttach, onConfigurationChanged, onContextItemSelected, onCreateAnimator, onCreateContextMenu, onCreateOptionsMenu, onDestroyOptionsMenu, onDetach, onHiddenChanged, onInflate, onInflate, onLowMemory, onOptionsItemSelected, onOptionsMenuClosed, onPause, onPrepareOptionsMenu, onResume, onTrimMemory, onViewCreated, registerForContextMenu, setArguments, setHasOptionsMenu, setInitialSavedState, setMenuVisibility, setRetainInstance, setTargetFragment, setUserVisibleHint, startActivity, startActivityForResult, toString, unregisterForContextMenu
     
    Methods inherited from class java.lang.Object
    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
     

    Constructor Detail

    PreferenceFragment

    public PreferenceFragment()
    Method Detail

    onCreate

    public void onCreate(Bundle savedInstanceState)
    Description copied from class: Fragment
    Called to do initial creation of a fragment. This is called after Fragment.onAttach(Activity) and before Fragment.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 Fragment.onActivityCreated(Bundle).

    Overrides:
    onCreate in class Fragment
    Parameters:
    savedInstanceState - If the fragment is being re-created from a previous saved state, this is the state.

    onCreateView

    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container,
                             Bundle savedInstanceState)
    Description copied from class: Fragment
    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 Fragment.onCreate(Bundle) and Fragment.onActivityCreated(Bundle).

    If you return a View from here, you will later be called in Fragment.onDestroyView() when the view is being released.

    Overrides:
    onCreateView in class Fragment
    Parameters:
    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.
    Returns:
    Return the View for the fragment's UI, or null.

    onActivityCreated

    public void onActivityCreated(Bundle savedInstanceState)
    Description copied from class: Fragment
    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 Fragment.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 Fragment.onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle) and before Fragment.onStart().

    Overrides:
    onActivityCreated in class Fragment
    Parameters:
    savedInstanceState - If the fragment is being re-created from a previous saved state, this is the state.

    onStart

    public void onStart()
    Description copied from class: Fragment
    Called when the Fragment is visible to the user. This is generally tied to Activity.onStart of the containing Activity's lifecycle.

    Overrides:
    onStart in class Fragment

    onStop

    public void onStop()
    Description copied from class: Fragment
    Called when the Fragment is no longer started. This is generally tied to Activity.onStop of the containing Activity's lifecycle.

    Overrides:
    onStop in class Fragment

    onDestroyView

    public void onDestroyView()
    Description copied from class: Fragment
    Called when the view previously created by Fragment.onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.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 Fragment.onStop() and before Fragment.onDestroy(). It is called regardless of whether Fragment.onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.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.

    Overrides:
    onDestroyView in class Fragment

    onDestroy

    public void onDestroy()
    Description copied from class: Fragment
    Called when the fragment is no longer in use. This is called after Fragment.onStop() and before Fragment.onDetach().

    Overrides:
    onDestroy in class Fragment

    onSaveInstanceState

    public void onSaveInstanceState(Bundle outState)
    Description copied from class: 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. 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 Fragment.onCreate(Bundle), Fragment.onCreateView(LayoutInflater, ViewGroup, Bundle), and Fragment.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 Fragment.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.

    Overrides:
    onSaveInstanceState in class Fragment
    Parameters:
    outState - Bundle in which to place your saved state.

    onActivityResult

    public void onActivityResult(int requestCode,
                                 int resultCode,
                                 Intent data)
    Description copied from class: Fragment
    Receive the result from a previous call to Fragment.startActivityForResult(Intent, int). This follows the related Activity API as described there in Activity.onActivityResult(int, int, Intent).

    Overrides:
    onActivityResult in class Fragment
    Parameters:
    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").

    getPreferenceManager

    public PreferenceManager getPreferenceManager()
    Returns the PreferenceManager used by this fragment.

    Returns:
    The PreferenceManager.

    setPreferenceScreen

    public void setPreferenceScreen(PreferenceScreen preferenceScreen)
    Sets the root of the preference hierarchy that this fragment is showing.

    Parameters:
    preferenceScreen - The root PreferenceScreen of the preference hierarchy.

    getPreferenceScreen

    public PreferenceScreen getPreferenceScreen()
    Gets the root of the preference hierarchy that this fragment is showing.

    Returns:
    The PreferenceScreen that is the root of the preference hierarchy.

    addPreferencesFromIntent

    public void addPreferencesFromIntent(Intent intent)
    Adds preferences from activities that match the given Intent.

    Parameters:
    intent - The Intent to query activities.

    addPreferencesFromResource

    public void addPreferencesFromResource(int preferencesResId)
    Inflates the given XML resource and adds the preference hierarchy to the current preference hierarchy.

    Parameters:
    preferencesResId - The XML resource ID to inflate.

    onPreferenceTreeClick

    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
                                         Preference preference)
    Called when a preference in the tree rooted at this PreferenceScreen has been clicked.

    Parameters:
    preferenceScreen - The PreferenceScreen that the preference is located in.
    preference - The preference that was clicked.
    Returns:
    Whether the click was handled.

    findPreference

    public Preference findPreference(java.lang.CharSequence key)
    Finds a Preference based on its key.

    Parameters:
    key - The key of the preference to retrieve.
    Returns:
    The Preference with the key, or null.
    See Also:
    PreferenceGroup.findPreference(CharSequence)

    getListView

    public ListView getListView()