Android Create a simple menu programmatically
A--C's method works, but you should avoid setting the click listeners manually. Especially when you have multiple menu items.
I prefer this way:
private static final int MENU_ITEM_ITEM1 = 1;...@Overridepublic boolean onCreateOptionsMenu(Menu menu) { menu.add(Menu.NONE, MENU_ITEM_ITEM1, Menu.NONE, "Item name"); return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_ITEM_ITEM1: clearArray(); return true; default: return false; }}
By using this approach you avoid creating unecessary objects (listeners) and I also find this code easier to read and understand.
Something like this might work:
public boolean onCreateOptionsMenu(Menu menu) { MenuItem item = menu.add ("Clear Array"); item.setOnMenuItemClickListener (new OnMenuItemClickListener(){ @Override public boolean onMenuItemClick (MenuItem item){ clearArray(); return true; } }); return true;}
Menu
gives us a handy method, add()
, which allows you to add a MenuItem. So we make one. Then we assign an OnMenuItemClickListener
to the MenuItem
and override its onMenuItemClick()
to do what we want it to do.
Programmatically, I was able to create a simple menu using the following code.
private final int MenuItem_EditId = 1, MenuItem_DeleteId = 0;@Override public boolean onCreateOptionsMenu(Menu menu){ MenuItem edit_item = menu.add(0, MenuItem_EditId, 0, R.string.edit); edit_item.setIcon(R.drawable.edit); edit_item.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM); MenuItem delete_item = menu.add(0, MenuItem_DeleteId, 1, R.string.edit); delete_item.setIcon(R.drawable.delete); delete_item.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM); return super.onCreateOptionsMenu(menu);}