Save the date! Android Dev Summit is coming to Sunnyvale, CA on Oct 23-24, 2019.

PreferenceFragment

abstract class PreferenceFragment : Fragment, PreferenceManager.OnPreferenceTreeClickListener, PreferenceManager.OnDisplayPreferenceDialogListener, PreferenceManager.OnNavigateToScreenListener, DialogPreference.TargetFragment
kotlin.Any
   ↳ android.app.Fragment
   ↳ androidx.preference.PreferenceFragment

Shows a hierarchy of Preference objects as lists. These preferences will automatically save to android.content.SharedPreferences as the user interacts with them. To retrieve an instance of android.content.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 this by calling onNavigateToScreen(PreferenceScreen).

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 android.app.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 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 building a settings screen using the AndroidX Preference library, see Settings.

  • Summary

    Nested classes
    abstract

    Interface that the fragment's containing activity should implement to be able to process preference items that wish to switch to a specified fragment.

    abstract

    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.

    abstract

    Interface that the fragment's containing activity should implement to be able to process preference items that wish to display a dialog.

    Constants
    static String

    Fragment argument used to specify the tag of the desired root PreferenceScreen object.

    Public constructors

    Use PreferenceFragmentCompat instead

    Public methods
    open T?

    Finds a Preference based on its key.

    open RecyclerView.LayoutManager!

    Called from onCreateRecyclerView to create the RecyclerView.LayoutManager for the created RecyclerView.

    open Unit

    open Unit

    open Unit
    onViewCreated(view: View!, savedInstanceState: Bundle!)

    open Unit
    onCreate(savedInstanceState: Bundle!)

    open PreferenceScreen!

    Gets the root of the preference hierarchy that this fragment is showing.

    open Unit
    setPreferencesFromResource(@XmlRes preferencesResId: Int, @Nullable key: String?)

    Inflates the given XML resource and replaces the current preference hierarchy (if any) with the preference hierarchy rooted at key.

    open Unit

    open Boolean

    Called when a preference in the tree rooted at this PreferenceScreen has been clicked.

    open PreferenceManager!

    Returns the PreferenceManager used by this fragment.

    open Unit

    open RecyclerView!
    onCreateRecyclerView(inflater: LayoutInflater!, parent: ViewGroup!, savedInstanceState: Bundle!)

    Creates the RecyclerView used to display the preferences.

    open Unit

    Sets the root of the preference hierarchy that this fragment is showing.

    open View!
    onCreateView(inflater: LayoutInflater!, container: ViewGroup!, savedInstanceState: Bundle!)

    RecyclerView!

    abstract Unit
    onCreatePreferences(savedInstanceState: Bundle!, rootKey: String!)

    Called during onCreate(Bundle) to supply the preferences for this fragment.

    open Unit
    setDivider(divider: Drawable!)

    Sets the Drawable that will be drawn between each item in the list.

    open Unit

    open Unit

    Sets the height of the divider that will be drawn between each item in the list.

    open Unit

    open Unit
    addPreferencesFromResource(@XmlRes preferencesResId: Int)

    Inflates the given XML resource and adds the preference hierarchy to the current preference hierarchy.

    open Unit

    Called when a preference in the tree requests to display a dialog.

    open Unit

    Called by PreferenceScreen#onClick() in order to navigate to a new screen of preferences.

    Protected methods
    open RecyclerView.Adapter<RecyclerView.ViewHolder!>!
    onCreateAdapter(preferenceScreen: PreferenceScreen!)

    Creates the root adapter.

    Constants

    ARG_PREFERENCE_ROOT

    static val ARG_PREFERENCE_ROOT: String

    Fragment argument used to specify the tag of the desired root PreferenceScreen object.

    Value: "androidx.preference.PreferenceFragmentCompat.PREFERENCE_ROOT"

    Public constructors

    <init>

    PreferenceFragment()

    Deprecated: Use PreferenceFragmentCompat instead

    Shows a hierarchy of Preference objects as lists. These preferences will automatically save to android.content.SharedPreferences as the user interacts with them. To retrieve an instance of android.content.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 this by calling onNavigateToScreen(PreferenceScreen).

    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 android.app.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 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 building a settings screen using the AndroidX Preference library, see Settings.

  • Public methods

    findPreference

    open fun <T : Preference!> findPreference(key: CharSequence): T?

    Finds a Preference based on its key.

    Parameters
    key CharSequence: The key of the preference to retrieve
    Return
    T?: The Preference with the key, or null

    onCreateLayoutManager

    open fun onCreateLayoutManager(): RecyclerView.LayoutManager!

    Called from onCreateRecyclerView to create the RecyclerView.LayoutManager for the created RecyclerView.

    Return
    RecyclerView.LayoutManager!: A new RecyclerView.LayoutManager instance

    scrollToPreference

    open fun scrollToPreference(key: String!): Unit

    scrollToPreference

    open fun scrollToPreference(preference: Preference!): Unit

    onViewCreated

    open fun onViewCreated(view: View!, savedInstanceState: Bundle!): Unit

    onCreate

    open fun onCreate(savedInstanceState: Bundle!): Unit

    getPreferenceScreen

    open fun getPreferenceScreen(): PreferenceScreen!

    Gets the root of the preference hierarchy that this fragment is showing.

    Return
    PreferenceScreen!: The PreferenceScreen that is the root of the preference hierarchy

    setPreferencesFromResource

    open fun setPreferencesFromResource(@XmlRes preferencesResId: Int, @Nullable key: String?): Unit

    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 Int: The preference key of the PreferenceScreen to use as the root of the preference hierarchy, or null to use the root PreferenceScreen.

    onStart

    open fun onStart(): Unit

    onPreferenceTreeClick

    open fun onPreferenceTreeClick(preference: Preference!): Boolean

    Called when a preference in the tree rooted at this PreferenceScreen has been clicked.

    Parameters
    preference Preference!: The preference that was clicked
    Return
    Boolean: Whether the click was handled

    getPreferenceManager

    open fun getPreferenceManager(): PreferenceManager!

    Returns the PreferenceManager used by this fragment.

    Return
    PreferenceManager!: The PreferenceManager used by this fragment

    onSaveInstanceState

    open fun onSaveInstanceState(outState: Bundle!): Unit

    onCreateRecyclerView

    open fun onCreateRecyclerView(inflater: LayoutInflater!, parent: ViewGroup!, savedInstanceState: Bundle!): RecyclerView!

    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 LayoutInflater!: 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 layout params of the view.
    savedInstanceState LayoutInflater!: If non-null, this view is being re-constructed from a previous saved state as given here.
    Return
    RecyclerView!: A new RecyclerView object to be placed into the view hierarchy

    setPreferenceScreen

    open fun setPreferenceScreen(preferenceScreen: PreferenceScreen!): Unit

    Sets the root of the preference hierarchy that this fragment is showing.

    Parameters
    preferenceScreen PreferenceScreen!: The root PreferenceScreen of the preference hierarchy

    onCreateView

    open fun onCreateView(inflater: LayoutInflater!, container: ViewGroup!, savedInstanceState: Bundle!): View!

    getListView

    fun getListView(): RecyclerView!

    onCreatePreferences

    abstract fun onCreatePreferences(savedInstanceState: Bundle!, rootKey: String!): Unit

    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 Bundle!: If non-null, this preference fragment should be rooted at the PreferenceScreen with this key.

    setDivider

    open fun setDivider(divider: Drawable!): Unit

    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).

    Parameters
    divider Drawable!: The drawable to use android.R.attr#divider

    onDestroyView

    open fun onDestroyView(): Unit

    setDividerHeight

    open fun setDividerHeight(height: Int): Unit

    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).

    Parameters
    height Int: The new height of the divider in pixels android.R.attr#dividerHeight

    onStop

    open fun onStop(): Unit

    addPreferencesFromResource

    open fun addPreferencesFromResource(@XmlRes preferencesResId: Int): Unit

    Inflates the given XML resource and adds the preference hierarchy to the current preference hierarchy.

    Parameters
    preferencesResId Int: The XML resource ID to inflate

    onDisplayPreferenceDialog

    open fun onDisplayPreferenceDialog(preference: Preference!): Unit

    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

    open fun onNavigateToScreen(preferenceScreen: PreferenceScreen!): Unit

    Called by PreferenceScreen#onClick() in order to navigate to a new screen of preferences. Calls PreferenceFragment.OnPreferenceStartScreenCallback#onPreferenceStartScreen if the target fragment or containing activity implements PreferenceFragment.OnPreferenceStartScreenCallback.

    Parameters
    preferenceScreen PreferenceScreen!: The PreferenceScreen to navigate to

    Protected methods

    onCreateAdapter

    protected open fun onCreateAdapter(preferenceScreen: PreferenceScreen!): RecyclerView.Adapter<RecyclerView.ViewHolder!>!

    Creates the root adapter.

    Parameters
    preferenceScreen PreferenceScreen!: The PreferenceScreen object to create the adapter for
    Return
    RecyclerView.Adapter<RecyclerView.ViewHolder!>!: An adapter that contains the preferences contained in this PreferenceScreen