package com.pinecone.technology.mcommerce.learning.android.chapter10.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;
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.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.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.popup_menu);
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener()
{
public boolean onMenuItemClick(MenuItem item)
{
appendMenuItemText(item);
return true;
}
}
);
popup.show();
}
}//eof-class