package com.google.mcommerce.sample.android.chapter04.actionBar; import android.app.ActionBar; import android.app.SearchManager; import android.app.SearchableInfo; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.SearchView; import android.widget.TextView; import com.google.mcommerce.sample.android.R; public abstract class BaseActionBarActivity extends DebugActivity { private String tag = null; public BaseActionBarActivity(String inTag) { super(R.menu.c04_menu, R.layout.c04_actionbar_main, R.id.textViewId, inTag); tag = inTag; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = this.getTextView(); tv.setText(tag); } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); this.setupSearchView(menu); return true; } protected boolean onMenuItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { this.reportBack(tag, "Home Pressed"); return true; } if (item.getItemId() == R.id.menu_invoke_tabnav) { if (getNavMode() == ActionBar.NAVIGATION_MODE_TABS) { this.reportBack(tag, "You are already in tab nav"); } else { this.invokeTabNav(); } return true; } if (item.getItemId() == R.id.menu_invoke_listnav) { if (getNavMode() == ActionBar.NAVIGATION_MODE_LIST) { this.reportBack(tag, "You are already in list nav"); } else { this.invokeListNav(); } return true; } if (item.getItemId() == R.id.menu_invoke_standardnav) { if (getNavMode() == ActionBar.NAVIGATION_MODE_STANDARD) { this.reportBack(tag, "You are already in standard nav"); } else { this.invokeStandardNav(); } return true; } return false; } private int getNavMode() { ActionBar bar = this.getActionBar(); return bar.getNavigationMode(); } private void invokeTabNav() { Intent i = new Intent(this, TabNavigationActionBarActivity.class); startActivity(i); } private void invokeListNav() { Intent i = new Intent(this, ListNavigationActionBarActivity.class); startActivity(i); } private void invokeStandardNav() { Intent i = new Intent(this, StandardNavigationActionBarActivity.class); startActivity(i); } private void setupSearchView(Menu menu) { SearchView searchView = (SearchView) menu.findItem(R.id.menu_search) .getActionView(); if (searchView == null) { this.reportBack(tag, "Failed to get search view"); return; } // setup searchview SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); ComponentName cn = new ComponentName(this, SearchResultsActivity.class); SearchableInfo info = searchManager.getSearchableInfo(cn); if (info == null) { this.reportBack(tag, "Failed to get search info"); return; } searchView.setSearchableInfo(info); // Do not iconify the widget; expand it by default searchView.setIconifiedByDefault(false); } }// eof-class