package com.google.mcommerce.sample.android.chapter04.menu; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.PopupMenu; import android.widget.TextView; import com.google.mcommerce.sample.android.R; public class XMLMenusActivity extends Activity { // Initialize this in onCreateOptions Menu myMenu = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // TextView tv = new TextView(this); // tv.setText("Hello, Android. Say hello"); // setContentView(tv); setContentView(R.layout.c04_menu_main); // Before calling this method make sure // set the content view registerForContextMenu(this.getTextView()); } @Override public boolean onCreateOptionsMenu(Menu menu) { this.loadXMLMenu(menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { this.appendMenuItemText(item); if (item.getItemId() == R.id.xml_menu_popup) { this.showPopupMenu(); } else if (item.getItemId() == R.id.menu_clear) { this.emptyText(); } return true; } private void loadXMLMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); // from activity inflater.inflate(R.menu.c04_my_menu, menu); } private TextView getTextView() { TextView tv = (TextView) this.findViewById(R.id.textViewId); return tv; } public void appendText(String text) { TextView tv = (TextView) this.findViewById(R.id.textViewId); tv.setText(tv.getText() + text); } private void appendMenuItemText(MenuItem menuItem) { String title = menuItem.getTitle().toString(); TextView tv = (TextView) this.findViewById(R.id.textViewId); tv.setText(tv.getText() + "\n" + title + ":" + menuItem.getItemId()); } private void emptyText() { TextView tv = (TextView) this.findViewById(R.id.textViewId); tv.setText(""); } private void showPopupMenu() { TextView tv = this.getTextView(); PopupMenu popup = new PopupMenu(this, tv); // popup.getMenuInflater().inflate( // R.menu.popup_menu, popup.getMenu()); // Or in api 14 popup.inflate(R.menu.c04_popup_menu); popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { appendMenuItemText(item); return true; } }); popup.show(); } }// eof-class