/* * Copyright 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.example.android.actionbarcompat; import android.app.Activity; import android.os.Build; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; /** * An abstract class that handles some common action bar-related functionality in the app. This * class provides functionality useful for both phones and tablets, and does not require any Android * 3.0-specific features, although it uses them if available. * * Two implementations of this class are {@link ActionBarHelperBase} for a pre-Honeycomb version of * the action bar, and {@link ActionBarHelperHoneycomb}, which uses the built-in ActionBar features * in Android 3.0 and later. */ public abstract class ActionBarHelper { protected Activity mActivity; /** * Factory method for creating {@link ActionBarHelper} objects for a * given activity. Depending on which device the app is running, either a basic helper or * Honeycomb-specific helper will be returned. */ public static ActionBarHelper createInstance(Activity activity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { return new ActionBarHelperICS(activity); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { return new ActionBarHelperHoneycomb(activity); } else { return new ActionBarHelperBase(activity); } } protected ActionBarHelper(Activity activity) { mActivity = activity; } /** * Action bar helper code to be run in {@link Activity#onCreate(android.os.Bundle)}. */ public void onCreate(Bundle savedInstanceState) { } /** * Action bar helper code to be run in {@link Activity#onPostCreate(android.os.Bundle)}. */ public void onPostCreate(Bundle savedInstanceState) { } /** * Action bar helper code to be run in {@link Activity#onCreateOptionsMenu(android.view.Menu)}. * * NOTE: Setting the visibility of menu items in <em>menu</em> is not currently supported. */ public boolean onCreateOptionsMenu(Menu menu) { return true; } /** * Action bar helper code to be run in {@link Activity#onTitleChanged(CharSequence, int)}. */ protected void onTitleChanged(CharSequence title, int color) { } /** * Sets the indeterminate loading state of the item with ID {@link R.id.menu_refresh}. * (where the item ID was menu_refresh). */ public abstract void setRefreshActionItemState(boolean refreshing); /** * Returns a {@link MenuInflater} for use when inflating menus. The implementation of this * method in {@link ActionBarHelperBase} returns a wrapped menu inflater that can read * action bar metadata from a menu resource pre-Honeycomb. */ public MenuInflater getMenuInflater(MenuInflater superMenuInflater) { return superMenuInflater; } }