LeanbackSettingsFragmentCompat
public
abstract
class
LeanbackSettingsFragmentCompat
extends Fragment
implements
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback,
PreferenceFragmentCompat.OnPreferenceStartScreenCallback,
PreferenceFragmentCompat.OnPreferenceDisplayDialogCallback
java.lang.Object | ||
↳ | androidx.fragment.app.Fragment | |
↳ | androidx.leanback.preference.LeanbackSettingsFragmentCompat |
This fragment provides a container for displaying a LeanbackPreferenceFragmentCompat
The following sample code shows a simple leanback preference fragment that is populated from a resource. The resource it loads is:
<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 sample implements
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback.onPreferenceStartFragment(PreferenceFragmentCompat, Preference)
,
PreferenceFragmentCompat.OnPreferenceStartScreenCallback.onPreferenceStartScreen(PreferenceFragmentCompat, PreferenceScreen)
,
and onPreferenceStartInitialScreen()
:
public static class SettingsFragment extends LeanbackSettingsFragmentCompat { @Override public void onPreferenceStartInitialScreen() { startPreferenceFragment(new DemoFragment()); } @Override public boolean onPreferenceStartFragment(PreferenceFragmentCompat caller, Preference pref) { final Bundle args = pref.getExtras(); final Fragment f = getChildFragmentManager().getFragmentFactory().instantiate( requireActivity().getClassLoader(), pref.getFragment()); f.setArguments(args); f.setTargetFragment(caller, 0); if (f instanceof PreferenceFragmentCompat || f instanceof PreferenceDialogFragmentCompat) { startPreferenceFragment(f); } else { startImmersiveFragment(f); } return true; } @Override public boolean onPreferenceStartScreen(PreferenceFragmentCompat caller, PreferenceScreen pref) { final Fragment fragment = new DemoFragment(); final Bundle args = new Bundle(1); args.putString(PreferenceFragmentCompat.ARG_PREFERENCE_ROOT, pref.getKey()); fragment.setArguments(args); startPreferenceFragment(fragment); return true; } } /** * The fragment that is embedded in SettingsFragment */ public static class DemoFragment extends LeanbackPreferenceFragmentCompat { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { // Load the preferences from an XML resource setPreferencesFromResource(R.xml.preferences, rootKey); } }
Summary
Public constructors | |
---|---|
LeanbackSettingsFragmentCompat()
|
Public methods | |
---|---|
View
|
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
Called to have the fragment instantiate its user interface view. |
void
|
onPause()
Called when the Fragment is no longer resumed. |
boolean
|
onPreferenceDisplayDialog(PreferenceFragmentCompat caller, Preference pref)
|
abstract
void
|
onPreferenceStartInitialScreen()
Called to instantiate the initial |
void
|
onResume()
Called when the fragment is visible to the user and actively running. |
void
|
onViewCreated(View view, Bundle savedInstanceState)
Called immediately after |
void
|
startImmersiveFragment(Fragment fragment)
Displays a fragment to the user, temporarily replacing the contents of this fragment. |
void
|
startPreferenceFragment(Fragment fragment)
Displays a preference fragment to the user. |
Inherited methods | |
---|---|
Public constructors
LeanbackSettingsFragmentCompat
public LeanbackSettingsFragmentCompat ()
Public methods
onCreateView
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
Called to have the fragment instantiate its user interface view.
This is optional, and non-graphical fragments can return null. This will be called between
onCreate(Bundle)
and onViewCreated(View, Bundle)
.
A default View can be returned by calling Fragment(int)
in your
constructor. Otherwise, this method returns null.
It is recommended to only inflate the layout in this method and move
logic that operates on the returned View to onViewCreated(View, Bundle)
.
If you return a View from here, you will later be called in
onDestroyView()
when the view is being released.
Parameters | |
---|---|
inflater |
LayoutInflater : The LayoutInflater object that can be used to inflate
any views in the fragment, |
container |
ViewGroup : 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 |
Bundle : If non-null, this fragment is being re-constructed
from a previous saved state as given here. |
Returns | |
---|---|
View |
Return the View for the fragment's UI, or null. |
onPause
public void onPause ()
Called when the Fragment is no longer resumed. This is generally
tied to Activity.onPause
of the containing
Activity's lifecycle.
onPreferenceDisplayDialog
public boolean onPreferenceDisplayDialog (PreferenceFragmentCompat caller, Preference pref)
Parameters | |
---|---|
caller |
PreferenceFragmentCompat |
pref |
Preference |
Returns | |
---|---|
boolean |
onPreferenceStartInitialScreen
public abstract void onPreferenceStartInitialScreen ()
Called to instantiate the initial PreferenceFragment
to be shown in this fragment. Implementations are expected to call
startPreferenceFragment(Fragment)
.
onResume
public void onResume ()
Called when the fragment is visible to the user and actively running.
This is generally
tied to Activity.onResume
of the containing
Activity's lifecycle.
onViewCreated
public void onViewCreated (View view, Bundle savedInstanceState)
Called immediately after onCreateView(LayoutInflater, ViewGroup, Bundle)
has returned, but before any saved state has been restored in to the view.
This gives subclasses a chance to initialize themselves once
they know their view hierarchy has been completely created. The fragment's
view hierarchy is not however attached to its parent at this point.
Parameters | |
---|---|
view |
View : The View returned by onCreateView(LayoutInflater, ViewGroup, Bundle) . |
savedInstanceState |
Bundle : If non-null, this fragment is being re-constructed
from a previous saved state as given here.
|
startImmersiveFragment
public void startImmersiveFragment (Fragment fragment)
Displays a fragment to the user, temporarily replacing the contents of this fragment.
Parameters | |
---|---|
fragment |
Fragment : Fragment instance to be added.
|
startPreferenceFragment
public void startPreferenceFragment (Fragment fragment)
Displays a preference fragment to the user. This method can also be used to display list-style fragments on top of the stack of preference fragments.
Parameters | |
---|---|
fragment |
Fragment : Fragment instance to be added.
|