The file containing the source code shown below is located in the corresponding directory in <sdk>/samples/android-<version>/...
/* * Copyright (C) 2011 The Android开源工程 * * 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.apis.app; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.provider.Settings; import android.view.ActionProvider; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ImageButton; import android.widget.Toast; import com.example.android.apis.R; /** * This activity demonstrates how to implement an {@link android.view.ActionProvider} * for adding functionality to the Action Bar. In particular this demo creates an * ActionProvider for launching the system settings and adds a menu item with that * provider. */ public class ActionBarSettingsActionProviderActivity extends Activity { /** * {@inheritDoc} */ @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.action_bar_settings_action_provider, menu); return true; } /** * {@inheritDoc} */ @Override public boolean onOptionsItemSelected(MenuItem item) { // If this callback does not handle the item click, onPerformDefaultAction // of the ActionProvider is invoked. Hence, the provider encapsulates the // complete functionality of the menu item. Toast.makeText(this, R.string.action_bar_settings_action_provider_no_handling, Toast.LENGTH_SHORT).show(); return false; } public static class SettingsActionProvider extends ActionProvider { /** An intent for launching the system settings. */ private static final Intent sSettingsIntent = new Intent(Settings.ACTION_SETTINGS); /** Context for accessing resources. */ private final Context mContext; /** * Creates a new instance. * * @param context Context for accessing resources. */ public SettingsActionProvider(Context context) { super(context); mContext = context; } /** * {@inheritDoc} */ @Override public View onCreateActionView() { // Inflate the action view to be shown on the action bar. LayoutInflater layoutInflater = LayoutInflater.from(mContext); View view = layoutInflater.inflate(R.layout.action_bar_settings_action_provider, null); ImageButton button = (ImageButton) view.findViewById(R.id.button); // Attach a click listener for launching the system settings. button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mContext.startActivity(sSettingsIntent); } }); return view; } /** * {@inheritDoc} */ @Override public boolean onPerformDefaultAction() { // This is called if the host menu item placed in the overflow menu of the // action bar is clicked and the host activity did not handle the click. mContext.startActivity(sSettingsIntent); return true; } } }