1d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy/*
2d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy * Copyright (C) 2015 The Android Open Source Project
3d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy *
4d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy * Licensed under the Apache License, Version 2.0 (the "License");
5d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy * you may not use this file except in compliance with the License.
6d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy * You may obtain a copy of the License at
7d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy *
8d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy *      http://www.apache.org/licenses/LICENSE-2.0
9d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy *
10d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy * Unless required by applicable law or agreed to in writing, software
11d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy * distributed under the License is distributed on an "AS IS" BASIS,
12d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy * See the License for the specific language governing permissions and
14d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy * limitations under the License.
15d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy */
16d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
17d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedypackage android.support.v4.app;
18d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
19d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedyimport android.content.Context;
20d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedyimport android.content.res.Configuration;
21d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedyimport android.os.Parcelable;
22a76a4339be2f27431a167381187c3f0b0d08f1b7Daniel Resnickimport android.support.annotation.Nullable;
23d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedyimport android.support.v4.util.SimpleArrayMap;
24d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedyimport android.util.AttributeSet;
25d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedyimport android.view.Menu;
26d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedyimport android.view.MenuInflater;
27d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedyimport android.view.MenuItem;
28d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedyimport android.view.View;
29d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
30d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedyimport java.io.FileDescriptor;
31d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedyimport java.io.PrintWriter;
32d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedyimport java.util.ArrayList;
33d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedyimport java.util.List;
34d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
35d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy/**
368491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy * Provides integration points with a {@link FragmentManager} for a fragment host.
378491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy * <p>
388491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy * It is the responsibility of the host to take care of the Fragment's lifecycle.
398491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy * The methods provided by {@link FragmentController} are for that purpose.
40d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy */
41d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedypublic class FragmentController {
428491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    private final FragmentHostCallback<?> mHost;
43d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
44d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    /**
45d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * Returns a {@link FragmentController}.
46d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     */
478491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    public static final FragmentController createController(FragmentHostCallback<?> callbacks) {
48d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        return new FragmentController(callbacks);
49d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
50d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
518491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    private FragmentController(FragmentHostCallback<?> callbacks) {
52d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost = callbacks;
53d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
54d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
558491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
568491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Returns a {@link FragmentManager} for this controller.
578491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
58d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public FragmentManager getSupportFragmentManager() {
59d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        return mHost.getFragmentManagerImpl();
60d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
61d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
628491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
638491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Returns a {@link LoaderManager}.
648491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
65d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public LoaderManager getSupportLoaderManager() {
66d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        return mHost.getLoaderManagerImpl();
67d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
68d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
698491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
70a76a4339be2f27431a167381187c3f0b0d08f1b7Daniel Resnick     * Returns a fragment with the given identifier.
71a76a4339be2f27431a167381187c3f0b0d08f1b7Daniel Resnick     */
72a76a4339be2f27431a167381187c3f0b0d08f1b7Daniel Resnick    @Nullable
73a76a4339be2f27431a167381187c3f0b0d08f1b7Daniel Resnick    Fragment findFragmentByWho(String who) {
74a76a4339be2f27431a167381187c3f0b0d08f1b7Daniel Resnick        return mHost.mFragmentManager.findFragmentByWho(who);
75a76a4339be2f27431a167381187c3f0b0d08f1b7Daniel Resnick    }
76a76a4339be2f27431a167381187c3f0b0d08f1b7Daniel Resnick
77a76a4339be2f27431a167381187c3f0b0d08f1b7Daniel Resnick    /**
788491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Returns the number of active fragments.
798491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
80d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public int getActiveFragmentsCount() {
81d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        final List<Fragment> actives = mHost.mFragmentManager.mActive;
82d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        return actives == null ? 0 : actives.size();
83d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
84d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
858491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
868491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Returns the list of active fragments.
878491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
88d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public List<Fragment> getActiveFragments(List<Fragment> actives) {
89d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        if (mHost.mFragmentManager.mActive == null) {
90d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy            return null;
91d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        }
92d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        if (actives == null) {
93d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy            actives = new ArrayList<Fragment>(getActiveFragmentsCount());
94d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        }
95d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        actives.addAll(mHost.mFragmentManager.mActive);
96d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        return actives;
97d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
98d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
998491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
1008491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Attaches the host to the FragmentManager for this controller. The host must be
1018491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * attached before the FragmentManager can be used to manage Fragments.
1028491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
103d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void attachHost(Fragment parent) {
104d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.mFragmentManager.attachController(
105d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy                mHost, mHost /*container*/, parent);
106d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
107d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
1088491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
1098491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Instantiates a Fragment's view.
1108491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
1118491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @param parent The parent that the created view will be placed
1128491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * in; <em>note that this may be null</em>.
1138491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @param name Tag name to be inflated.
1148491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @param context The context the view is being created in.
1158491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @param attrs Inflation attributes as specified in XML file.
1168491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
1178491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @return view the newly created view
1188491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
119d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {
120d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        return mHost.mFragmentManager.onCreateView(parent, name, context, attrs);
121d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
122d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
123d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    /**
124d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * Marks the fragment state as unsaved. This allows for "state loss" detection.
125d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     */
126d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void noteStateNotSaved() {
127d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.mFragmentManager.noteStateNotSaved();
128d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
129d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
130d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    /**
131d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * Saves the state for all Fragments.
132d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     */
133d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public Parcelable saveAllState() {
134d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        return mHost.mFragmentManager.saveAllState();
135d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
136d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
137d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    /**
138d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * Restores the saved state for all Fragments. The given Fragment list are Fragment
139d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * instances retained across configuration changes.
140d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     *
141d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * @see #retainNonConfig()
142c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell     *
143c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell     * @deprecated use {@link #restoreAllState(Parcelable, FragmentManagerNonConfig)}
144d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     */
145d805095048f6be52cddbd572ee343c4639ba8187Alan Viverette    @Deprecated
1468491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    public void restoreAllState(Parcelable state, List<Fragment> nonConfigList) {
147c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell        mHost.mFragmentManager.restoreAllState(state,
148c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell                new FragmentManagerNonConfig(nonConfigList, null));
149c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell    }
150c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell
151c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell    /**
152c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell     * Restores the saved state for all Fragments. The given FragmentManagerNonConfig are Fragment
153c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell     * instances retained across configuration changes, including nested fragments
154c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell     *
155c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell     * @see #retainNestedNonConfig()
156c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell     */
157c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell    public void restoreAllState(Parcelable state, FragmentManagerNonConfig nonConfig) {
158c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell        mHost.mFragmentManager.restoreAllState(state, nonConfig);
159d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
160d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
161d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    /**
162d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * Returns a list of Fragments that have opted to retain their instance across
163d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * configuration changes.
164c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell     *
165c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell     * @deprecated use {@link #retainNestedNonConfig()} to also track retained
166c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell     *             nested child fragments
167d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     */
168d805095048f6be52cddbd572ee343c4639ba8187Alan Viverette    @Deprecated
1698491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    public List<Fragment> retainNonConfig() {
170c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell        FragmentManagerNonConfig nonconf = mHost.mFragmentManager.retainNonConfig();
171c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell        return nonconf != null ? nonconf.getFragments() : null;
172c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell    }
173c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell
174c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell    /**
175c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell     * Returns a nested tree of Fragments that have opted to retain their instance across
176c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell     * configuration changes.
177c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell     */
178c077b4cd990a9f220a27ad5eca04828e17136064Adam Powell    public FragmentManagerNonConfig retainNestedNonConfig() {
179d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        return mHost.mFragmentManager.retainNonConfig();
180d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
181d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
1828491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
1838491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Moves all Fragments managed by the controller's FragmentManager
1848491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * into the create state.
1858491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call when Fragments should be created.
1868491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
1878491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @see Fragment#onCreate(Bundle)
1888491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
189d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void dispatchCreate() {
190d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.mFragmentManager.dispatchCreate();
191d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
192d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
1938491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
1948491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Moves all Fragments managed by the controller's FragmentManager
1958491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * into the activity created state.
1968491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call when Fragments should be informed their host has been created.
1978491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
1988491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @see Fragment#onActivityCreated(Bundle)
1998491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
200d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void dispatchActivityCreated() {
201d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.mFragmentManager.dispatchActivityCreated();
202d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
203d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
2048491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
2058491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Moves all Fragments managed by the controller's FragmentManager
2068491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * into the start state.
2078491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call when Fragments should be started.
2088491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
2098491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @see Fragment#onStart()
2108491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
211d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void dispatchStart() {
212d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.mFragmentManager.dispatchStart();
213d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
214d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
2158491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
2168491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Moves all Fragments managed by the controller's FragmentManager
2178491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * into the resume state.
2188491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call when Fragments should be resumed.
2198491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
2208491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @see Fragment#onResume()
2218491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
222d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void dispatchResume() {
223d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.mFragmentManager.dispatchResume();
224d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
225d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
2268491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
2278491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Moves all Fragments managed by the controller's FragmentManager
2288491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * into the pause state.
2298491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call when Fragments should be paused.
2308491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
2318491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @see Fragment#onPause()
2328491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
233d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void dispatchPause() {
234d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.mFragmentManager.dispatchPause();
235d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
236d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
2378491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
2388491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Moves all Fragments managed by the controller's FragmentManager
2398491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * into the stop state.
2408491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call when Fragments should be stopped.
2418491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
2428491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @see Fragment#onStop()
2438491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
244d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void dispatchStop() {
245d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.mFragmentManager.dispatchStop();
246d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
247d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
248d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void dispatchReallyStop() {
249d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.mFragmentManager.dispatchReallyStop();
250d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
251d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
2528491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
2538491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Moves all Fragments managed by the controller's FragmentManager
2548491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * into the destroy view state.
2558491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call when the Fragment's views should be destroyed.
2568491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
2578491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @see Fragment#onDestroyView()
2588491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
259d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void dispatchDestroyView() {
260d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.mFragmentManager.dispatchDestroyView();
261d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
262d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
2638491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
2648491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Moves all Fragments managed by the controller's FragmentManager
2658491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * into the destroy state.
2668491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call when Fragments should be destroyed.
2678491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
2688491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @see Fragment#onDestroy()
2698491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
270d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void dispatchDestroy() {
271d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.mFragmentManager.dispatchDestroy();
272d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
273d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
2748491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
2755fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian     * Lets all Fragments managed by the controller's FragmentManager know the multi-window mode of
2765fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian     * the activity changed.
2775fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian     * <p>Call when the multi-window mode of the activity changed.
2785fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian     *
2795fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian     * @see Fragment#onMultiWindowModeChanged
2805fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian     */
2815fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian    public void dispatchMultiWindowModeChanged(boolean isInMultiWindowMode) {
2825fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian        mHost.mFragmentManager.dispatchMultiWindowModeChanged(isInMultiWindowMode);
2835fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian    }
2845fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian
2855fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian    /**
2865fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian     * Lets all Fragments managed by the controller's FragmentManager know the picture-in-picture
2875fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian     * mode of the activity changed.
2885fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian     * <p>Call when the picture-in-picture mode of the activity changed.
2895fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian     *
2905fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian     * @see Fragment#onPictureInPictureModeChanged
2915fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian     */
2925fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian    public void dispatchPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
2935fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian        mHost.mFragmentManager.dispatchPictureInPictureModeChanged(isInPictureInPictureMode);
2945fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian    }
2955fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian
2965fa6d3dd3f408ceb2ff7368fd0259713d9382ad8Andrii Kulian    /**
2978491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Lets all Fragments managed by the controller's FragmentManager
2988491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * know a configuration change occurred.
2998491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call when there is a configuration change.
3008491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
3018491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @see Fragment#onConfigurationChanged(Configuration)
3028491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
303d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void dispatchConfigurationChanged(Configuration newConfig) {
304d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.mFragmentManager.dispatchConfigurationChanged(newConfig);
305d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
306d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
3078491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
3088491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Lets all Fragments managed by the controller's FragmentManager
3098491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * know the device is in a low memory condition.
3108491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call when the device is low on memory and Fragment's should trim
3118491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * their memory usage.
3128491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
3138491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @see Fragment#onLowMemory()
3148491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
315d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void dispatchLowMemory() {
316d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.mFragmentManager.dispatchLowMemory();
317d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
318d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
3198491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
3208491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Lets all Fragments managed by the controller's FragmentManager
3218491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * know they should create an options menu.
3228491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call when the Fragment should create an options menu.
3238491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
3248491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @return {@code true} if the options menu contains items to display
3258491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @see Fragment#onCreateOptionsMenu(Menu, MenuInflater)
3268491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
327d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public boolean dispatchCreateOptionsMenu(Menu menu, MenuInflater inflater) {
328d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        return mHost.mFragmentManager.dispatchCreateOptionsMenu(menu, inflater);
329d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
330d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
3318491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
3328491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Lets all Fragments managed by the controller's FragmentManager
3338491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * know they should prepare their options menu for display.
3348491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call immediately before displaying the Fragment's options menu.
3358491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
3368491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @return {@code true} if the options menu contains items to display
3378491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @see Fragment#onPrepareOptionsMenu(Menu)
3388491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
339d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public boolean dispatchPrepareOptionsMenu(Menu menu) {
340d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        return mHost.mFragmentManager.dispatchPrepareOptionsMenu(menu);
341d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
342d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
3438491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
3448491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Sends an option item selection event to the Fragments managed by the
3458491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * controller's FragmentManager. Once the event has been consumed,
3468491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * no additional handling will be performed.
3478491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call immediately after an options menu item has been selected
3488491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
3498491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @return {@code true} if the options menu selection event was consumed
3508491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @see Fragment#onOptionsItemSelected(MenuItem)
3518491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
352d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public boolean dispatchOptionsItemSelected(MenuItem item) {
353d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        return mHost.mFragmentManager.dispatchOptionsItemSelected(item);
354d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
355d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
3568491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
3578491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Sends a context item selection event to the Fragments managed by the
3588491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * controller's FragmentManager. Once the event has been consumed,
3598491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * no additional handling will be performed.
3608491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call immediately after an options menu item has been selected
3618491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
3628491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @return {@code true} if the context menu selection event was consumed
3638491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @see Fragment#onContextItemSelected(MenuItem)
3648491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
365d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public boolean dispatchContextItemSelected(MenuItem item) {
366d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        return mHost.mFragmentManager.dispatchContextItemSelected(item);
367d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
368d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
3698491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
3708491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Lets all Fragments managed by the controller's FragmentManager
3718491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * know their options menu has closed.
3728491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call immediately after closing the Fragment's options menu.
3738491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     *
3748491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @see Fragment#onOptionsMenuClosed(Menu)
3758491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
376d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void dispatchOptionsMenuClosed(Menu menu) {
377d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.mFragmentManager.dispatchOptionsMenuClosed(menu);
378d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
379d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
3808491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
3818491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Execute any pending actions for the Fragments managed by the
3828491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * controller's FragmentManager.
3838491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * <p>Call when queued actions can be performed [eg when the
3848491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Fragment moves into a start or resume state].
3858491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * @return {@code true} if queued actions were performed
3868491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
387d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public boolean execPendingActions() {
388d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        return mHost.mFragmentManager.execPendingActions();
389d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
390d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
391edaa101bfa72b5e5a5b14b9e6c66579eaed5e8ccTodd Kennedy    /**
392edaa101bfa72b5e5a5b14b9e6c66579eaed5e8ccTodd Kennedy     * Starts the loaders.
393edaa101bfa72b5e5a5b14b9e6c66579eaed5e8ccTodd Kennedy     */
394edaa101bfa72b5e5a5b14b9e6c66579eaed5e8ccTodd Kennedy    public void doLoaderStart() {
395d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.doLoaderStart();
396d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
397d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
398d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    /**
399d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * Stops the loaders, optionally retaining their state. This is useful for keeping the
400d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * loader state across configuration changes.
401d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     *
402d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * @param retain When {@code true}, the loaders aren't stopped, but, their instances
403d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * are retained in a started state
404d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     */
405edaa101bfa72b5e5a5b14b9e6c66579eaed5e8ccTodd Kennedy    public void doLoaderStop(boolean retain) {
406d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.doLoaderStop(retain);
407d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
408d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
409edaa101bfa72b5e5a5b14b9e6c66579eaed5e8ccTodd Kennedy    /**
410edaa101bfa72b5e5a5b14b9e6c66579eaed5e8ccTodd Kennedy     * Retains the state of each of the loaders.
411edaa101bfa72b5e5a5b14b9e6c66579eaed5e8ccTodd Kennedy     */
412edaa101bfa72b5e5a5b14b9e6c66579eaed5e8ccTodd Kennedy    public void doLoaderRetain() {
413d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.doLoaderRetain();
414d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
415d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
416edaa101bfa72b5e5a5b14b9e6c66579eaed5e8ccTodd Kennedy    /**
4178491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Destroys the loaders and, if their state is not being retained, removes them.
418edaa101bfa72b5e5a5b14b9e6c66579eaed5e8ccTodd Kennedy     */
419edaa101bfa72b5e5a5b14b9e6c66579eaed5e8ccTodd Kennedy    public void doLoaderDestroy() {
420d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.doLoaderDestroy();
421d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
422d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
423edaa101bfa72b5e5a5b14b9e6c66579eaed5e8ccTodd Kennedy    /**
4248491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Lets the loaders know the host is ready to receive notifications.
425edaa101bfa72b5e5a5b14b9e6c66579eaed5e8ccTodd Kennedy     */
426edaa101bfa72b5e5a5b14b9e6c66579eaed5e8ccTodd Kennedy    public void reportLoaderStart() {
427d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.reportLoaderStart();
428d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
429d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
430d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    /**
431d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * Returns a list of LoaderManagers that have opted to retain their instance across
432d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * configuration changes.
433d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     */
434d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public SimpleArrayMap<String, LoaderManager> retainLoaderNonConfig() {
435d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        return mHost.retainLoaderNonConfig();
436d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
437d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
438d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    /**
439d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * Restores the saved state for all LoaderManagers. The given LoaderManager list are
440d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * LoaderManager instances retained across configuration changes.
441d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     *
442d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     * @see #retainLoaderNonConfig()
443d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy     */
444d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void restoreLoaderNonConfig(SimpleArrayMap<String, LoaderManager> loaderManagers) {
445d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.restoreLoaderNonConfig(loaderManagers);
446d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
447d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy
4488491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy    /**
4498491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     * Dumps the current state of the loaders.
4508491eb62f621cd5de4b4caed839be09c77011f53Todd Kennedy     */
451d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    public void dumpLoaders(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) {
452d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy        mHost.dumpLoaders(prefix, fd, writer, args);
453d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy    }
454d608cf6e08769bf320c1b595cbbd9a7664160449Todd Kennedy}
455