ActionBar.java revision a408291e22def5755559f42cde913706a6d628c0
133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell/*
233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * Copyright (C) 2010 The Android Open Source Project
333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell *
433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * Licensed under the Apache License, Version 2.0 (the "License");
533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * you may not use this file except in compliance with the License.
633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * You may obtain a copy of the License at
733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell *
833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell *      http://www.apache.org/licenses/LICENSE-2.0
933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell *
1033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * Unless required by applicable law or agreed to in writing, software
1133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * distributed under the License is distributed on an "AS IS" BASIS,
1233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * See the License for the specific language governing permissions and
1433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * limitations under the License.
1533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell */
1633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
1733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellpackage android.app;
1833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
1933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.graphics.drawable.Drawable;
2033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.view.Menu;
2133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.view.MenuItem;
2233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.view.View;
23a408291e22def5755559f42cde913706a6d628c0Adam Powellimport android.widget.AdapterView;
24a408291e22def5755559f42cde913706a6d628c0Adam Powellimport android.widget.SpinnerAdapter;
2533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
2633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell/**
2733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * This is the public interface to the contextual ActionBar.
2833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * The ActionBar acts as a replacement for the title bar in Activities.
2933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * It provides facilities for creating toolbar actions as well as
3033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * methods of navigating around an application.
3133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell */
3233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellpublic abstract class ActionBar {
33a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell    /**
34a408291e22def5755559f42cde913706a6d628c0Adam Powell     * Standard navigation mode. Consists of either a logo or icon
35a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     * and title text with an optional subtitle. Clicking any of these elements
36a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     * will dispatch onActionItemSelected to the registered Callback with
37a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     * a MenuItem with item ID android.R.id.home.
38a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     */
39a408291e22def5755559f42cde913706a6d628c0Adam Powell    public static final int NAVIGATION_MODE_STANDARD = 0;
4033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
4133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
4233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * Dropdown list navigation mode. Instead of static title text this mode
4333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * presents a dropdown menu for navigation within the activity.
4433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
4533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public static final int NAVIGATION_MODE_DROPDOWN_LIST = 1;
4633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
4733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
4833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * Tab navigation mode. Instead of static title text this mode
4933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * presents a series of tabs for navigation within the activity.
5033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
5133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public static final int NAVIGATION_MODE_TABS = 2;
5233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
5333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
5433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * Custom navigation mode. This navigation mode is set implicitly whenever
5533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * a custom navigation view is set. See {@link #setCustomNavigationView(View)}.
5633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
5733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public static final int NAVIGATION_MODE_CUSTOM = 3;
5833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
5933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
6033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * Use logo instead of icon if available. This flag will cause appropriate
6133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * navigation modes to use a wider logo in place of the standard icon.
6233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
6333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public static final int DISPLAY_USE_LOGO = 0x1;
6433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
6533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
6633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * Hide 'home' elements in this action bar, leaving more space for other
6733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * navigation elements. This includes logo and icon.
6833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
6933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public static final int DISPLAY_HIDE_HOME = 0x2;
7033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
7133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
7233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * Set the callback that the ActionBar will use to handle events
7333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * and populate menus.
7433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * @param callback Callback to use
7533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
7633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public abstract void setCallback(Callback callback);
7733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
7833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
79a408291e22def5755559f42cde913706a6d628c0Adam Powell     * Set the action bar into custom navigation mode, supplying a view
80a408291e22def5755559f42cde913706a6d628c0Adam Powell     * for custom navigation.
8133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     *
8233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * Custom navigation views appear between the application icon and
8333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * any action buttons and may use any space available there. Common
84a408291e22def5755559f42cde913706a6d628c0Adam Powell     * use cases for custom navigation views might include an auto-suggesting
85a408291e22def5755559f42cde913706a6d628c0Adam Powell     * address bar for a browser or other navigation mechanisms that do not
86a408291e22def5755559f42cde913706a6d628c0Adam Powell     * translate well to provided navigation modes.
8733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     *
8833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * @param view Custom navigation view to place in the ActionBar.
8933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
90a408291e22def5755559f42cde913706a6d628c0Adam Powell    public abstract void setCustomNavigationMode(View view);
9133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
9233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
93a408291e22def5755559f42cde913706a6d628c0Adam Powell     * Set the action bar into dropdown navigation mode and supply an adapter
94a408291e22def5755559f42cde913706a6d628c0Adam Powell     * that will provide views for navigation choices.
9533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     *
96a408291e22def5755559f42cde913706a6d628c0Adam Powell     * @param adapter An adapter that will provide views both to display
97a408291e22def5755559f42cde913706a6d628c0Adam Powell     *                the current navigation selection and populate views
98a408291e22def5755559f42cde913706a6d628c0Adam Powell     *                within the dropdown navigation menu.
9933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
100a408291e22def5755559f42cde913706a6d628c0Adam Powell    public abstract void setDropdownNavigationMode(SpinnerAdapter adapter);
101a408291e22def5755559f42cde913706a6d628c0Adam Powell
10233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
103a408291e22def5755559f42cde913706a6d628c0Adam Powell     * Set the action bar into standard navigation mode, supplying a title and subtitle.
10433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     *
105a408291e22def5755559f42cde913706a6d628c0Adam Powell     * Standard navigation mode is default. The title is automatically set to the
106a408291e22def5755559f42cde913706a6d628c0Adam Powell     * name of your Activity. Subtitles are displayed underneath the title, usually
107a408291e22def5755559f42cde913706a6d628c0Adam Powell     * in a smaller font or otherwise less prominently than the title. Subtitles are
108a408291e22def5755559f42cde913706a6d628c0Adam Powell     * good for extended descriptions of activity state.
109a408291e22def5755559f42cde913706a6d628c0Adam Powell     *
110a408291e22def5755559f42cde913706a6d628c0Adam Powell     * @param title The action bar's title. null is treated as an empty string.
111a408291e22def5755559f42cde913706a6d628c0Adam Powell     * @param subtitle The action bar's subtitle. null is treated as an empty string.
11233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
113a408291e22def5755559f42cde913706a6d628c0Adam Powell    public abstract void setStandardNavigationMode(CharSequence title, CharSequence subtitle);
114a408291e22def5755559f42cde913706a6d628c0Adam Powell
11533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
116a408291e22def5755559f42cde913706a6d628c0Adam Powell     * Set the action bar into standard navigation mode, supplying a title and subtitle.
117a408291e22def5755559f42cde913706a6d628c0Adam Powell     *
118a408291e22def5755559f42cde913706a6d628c0Adam Powell     * Standard navigation mode is default. The title is automatically set to the
119a408291e22def5755559f42cde913706a6d628c0Adam Powell     * name of your Activity.
12033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     *
121a408291e22def5755559f42cde913706a6d628c0Adam Powell     * @param title The action bar's title. null is treated as an empty string.
12233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
123a408291e22def5755559f42cde913706a6d628c0Adam Powell    public abstract void setStandardNavigationMode(CharSequence title);
124a408291e22def5755559f42cde913706a6d628c0Adam Powell
12533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
126a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     * Set display options. This changes all display option bits at once. To change
127a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     * a limited subset of display options, see {@link #setDisplayOptions(int, int)}.
12833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     *
12933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * @param options A combination of the bits defined by the DISPLAY_ constants
13033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     *                defined in ActionBar.
13133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
13233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public abstract void setDisplayOptions(int options);
13333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
13433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
135a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     * Set selected display options. Only the options specified by mask will be changed.
136a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     * To change all display option bits at once, see {@link #setDisplayOptions(int)}.
137a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     *
138a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     * <p>Example: setDisplayOptions(0, DISPLAY_HIDE_HOME) will disable the
139a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     * {@link #DISPLAY_HIDE_HOME} option.
140a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     * setDisplayOptions(DISPLAY_HIDE_HOME, DISPLAY_HIDE_HOME | DISPLAY_USE_LOGO)
141a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     * will enable {@link #DISPLAY_HIDE_HOME} and disable {@link #DISPLAY_USE_LOGO}.
142a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     *
143a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     * @param options A combination of the bits defined by the DISPLAY_ constants
144a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     *                defined in ActionBar.
145a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     * @param mask A bit mask declaring which display options should be changed.
146a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell     */
147a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell    public abstract void setDisplayOptions(int options, int mask);
148a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell
149a1700783b52c3f4e6b52ea425cdce93c74936586Adam Powell    /**
15033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * Set the ActionBar's background.
15133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     *
15233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * @param d Background drawable
15333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
15433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public abstract void setBackgroundDrawable(Drawable d);
15533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
15633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
15733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * Set a drawable to use as a divider between sections of the ActionBar.
15833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     *
15933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * @param d Divider drawable
16033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
16133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public abstract void setDividerDrawable(Drawable d);
16233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
16333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
16433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * @return The current custom navigation view.
16533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
16633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public abstract View getCustomNavigationView();
16733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
16833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
169a408291e22def5755559f42cde913706a6d628c0Adam Powell     * Returns the current ActionBar title in standard mode.
170a408291e22def5755559f42cde913706a6d628c0Adam Powell     * Returns null if {@link #getNavigationMode()} would not return
171a408291e22def5755559f42cde913706a6d628c0Adam Powell     * {@link #NAVIGATION_MODE_STANDARD}.
172a408291e22def5755559f42cde913706a6d628c0Adam Powell     *
173a408291e22def5755559f42cde913706a6d628c0Adam Powell     * @return The current ActionBar title or null.
17433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
17533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public abstract CharSequence getTitle();
17633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
17733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
178a408291e22def5755559f42cde913706a6d628c0Adam Powell     * Returns the current ActionBar subtitle in standard mode.
179a408291e22def5755559f42cde913706a6d628c0Adam Powell     * Returns null if {@link #getNavigationMode()} would not return
180a408291e22def5755559f42cde913706a6d628c0Adam Powell     * {@link #NAVIGATION_MODE_STANDARD}.
181a408291e22def5755559f42cde913706a6d628c0Adam Powell     *
182a408291e22def5755559f42cde913706a6d628c0Adam Powell     * @return The current ActionBar subtitle or null.
18333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
18433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public abstract CharSequence getSubtitle();
18533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
18633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
187a408291e22def5755559f42cde913706a6d628c0Adam Powell     * Returns the current navigation mode. The result will be one of:
188a408291e22def5755559f42cde913706a6d628c0Adam Powell     * <ul>
189a408291e22def5755559f42cde913706a6d628c0Adam Powell     * <li>{@link #NAVIGATION_MODE_STANDARD}</li>
190a408291e22def5755559f42cde913706a6d628c0Adam Powell     * <li>{@link #NAVIGATION_MODE_DROPDOWN_LIST}</li>
191a408291e22def5755559f42cde913706a6d628c0Adam Powell     * <li>{@link #NAVIGATION_MODE_TABS}</li>
192a408291e22def5755559f42cde913706a6d628c0Adam Powell     * <li>{@link #NAVIGATION_MODE_CUSTOM}</li>
193a408291e22def5755559f42cde913706a6d628c0Adam Powell     * </ul>
194a408291e22def5755559f42cde913706a6d628c0Adam Powell     *
19533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * @return The current navigation mode.
196a408291e22def5755559f42cde913706a6d628c0Adam Powell     *
197a408291e22def5755559f42cde913706a6d628c0Adam Powell     * @see #setStandardNavigationMode(CharSequence)
198a408291e22def5755559f42cde913706a6d628c0Adam Powell     * @see #setStandardNavigationMode(CharSequence, CharSequence)
199a408291e22def5755559f42cde913706a6d628c0Adam Powell     * @see #setDropdownNavigationMode(SpinnerAdapter)
200a408291e22def5755559f42cde913706a6d628c0Adam Powell     * @see #setCustomNavigationMode(View)
20133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
20233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public abstract int getNavigationMode();
20333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
20433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
20533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * @return The current set of display options.
20633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
20733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public abstract int getDisplayOptions();
20833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
20933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
21033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * Request an update of the items in the action menu.
21133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * This will result in a call to Callback.onUpdateActionMenu(Menu)
21233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * and the ActionBar will update based on any changes made there.
21333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
21433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public abstract void updateActionMenu();
21533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
21633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
21733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * Callback interface for ActionBar events.
21833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
21933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public interface Callback {
22033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        /**
22133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         * Initialize the always-visible contents of the action bar.
22233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         * You should place your menu items into <var>menu</var>.
22333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         *
22433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         * <p>This is only called once, the first time the action bar is displayed.
22533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         *
22633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         * @param menu The action menu in which to place your items.
22733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         * @return You must return true for actions to be displayed;
22833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         *         if you return false they will not be shown.
22933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         *
230a408291e22def5755559f42cde913706a6d628c0Adam Powell         * @see #onActionItemClicked(MenuItem)
23133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         */
23233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        public boolean onCreateActionMenu(Menu menu);
23333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
23433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        /**
23533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         * Update the action bar. This is called in response to {@link #updateActionMenu()}
23633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         * calls, which may be application-initiated or the result of changing fragment state.
23733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         *
23833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         * @return true if the action bar should update based on altered menu contents,
23933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         *         false if no changes are necessary.
24033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         */
24133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        public boolean onUpdateActionMenu(Menu menu);
24233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
24333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        /**
244a408291e22def5755559f42cde913706a6d628c0Adam Powell         * This hook is called whenever an action item in your action bar is clicked.
24533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         * The default implementation simply returns false to have the normal
24633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         * processing happen (sending a message to its handler). You can use this
24733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         * method for any items for which you would like to do processing without
24833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         * those other facilities.
24933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         *
25033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         * @param item The action bar item that was selected.
25133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         * @return boolean Return false to allow normal menu processing to proceed,
25233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         *         true to consume it here.
25333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         */
254a408291e22def5755559f42cde913706a6d628c0Adam Powell        public boolean onActionItemClicked(MenuItem item);
255a408291e22def5755559f42cde913706a6d628c0Adam Powell
256a408291e22def5755559f42cde913706a6d628c0Adam Powell        /**
257a408291e22def5755559f42cde913706a6d628c0Adam Powell         * This method is called whenever a navigation item in your action bar
258a408291e22def5755559f42cde913706a6d628c0Adam Powell         * is selected.
259a408291e22def5755559f42cde913706a6d628c0Adam Powell         *
260a408291e22def5755559f42cde913706a6d628c0Adam Powell         * @param itemPosition Position of the item clicked.
261a408291e22def5755559f42cde913706a6d628c0Adam Powell         * @param itemId ID of the item clicked.
262a408291e22def5755559f42cde913706a6d628c0Adam Powell         * @return True if the event was handled, false otherwise.
263a408291e22def5755559f42cde913706a6d628c0Adam Powell         */
264a408291e22def5755559f42cde913706a6d628c0Adam Powell        public boolean onNavigationItemSelected(int itemPosition, long itemId);
265a408291e22def5755559f42cde913706a6d628c0Adam Powell
26633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        /*
26733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         * In progress
26833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell         */
26933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        public boolean onCreateContextMode(int modeId, Menu menu);
27033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        public boolean onPrepareContextMode(int modeId, Menu menu);
271a408291e22def5755559f42cde913706a6d628c0Adam Powell        public boolean onContextItemClicked(int modeId, MenuItem item);
27233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    }
27333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
27433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    /**
27533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * Simple stub implementations of ActionBar.Callback methods.
27633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     * Extend this if you only need a subset of Callback functionality.
27733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell     */
27833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    public static class SimpleCallback implements Callback {
27933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        public boolean onCreateActionMenu(Menu menu) {
28033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell            return false;
28133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        }
28233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
28333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        public boolean onUpdateActionMenu(Menu menu) {
28433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell            return false;
28533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        }
28633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
287a408291e22def5755559f42cde913706a6d628c0Adam Powell        public boolean onActionItemClicked(MenuItem item) {
28833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell            return false;
28933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        }
29033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
29133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        public boolean onCreateContextMode(int modeId, Menu menu) {
29233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell            return false;
29333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        }
29433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
29533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        public boolean onPrepareContextMode(int modeId, Menu menu) {
29633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell            return false;
29733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        }
29833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
299a408291e22def5755559f42cde913706a6d628c0Adam Powell        public boolean onContextItemClicked(int modeId, MenuItem item) {
300a408291e22def5755559f42cde913706a6d628c0Adam Powell            return false;
301a408291e22def5755559f42cde913706a6d628c0Adam Powell        }
302a408291e22def5755559f42cde913706a6d628c0Adam Powell
303a408291e22def5755559f42cde913706a6d628c0Adam Powell        public boolean onNavigationItemSelected(int itemPosition, long itemId) {
30433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell            return false;
30533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell        }
30633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell    }
30733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell
30833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell}
309