Android以编程方式创build一个简单的菜单

我试图用一个button来创build一个简单的菜单,将调用一个方法来清除数组。 我不想使用XML,因为我需要的只是一个button。

像这样的东西 –

public boolean onCreateOptionsMenu(Menu menu) { button "Clear Array"; onClick{// run method that wipes array}; return true; } 

谢谢

Solutions Collecting From Web of "Android以编程方式创build一个简单的菜单"

A – C的方法工作,但你应该避免手动设置点击监听。 特别是当你有多个菜单项。

我更喜欢这种方式:

 private static final int MENU_ITEM_ITEM1 = 1; ... @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(Menu.NONE, MENU_ITEM_ITEM1, Menu.NONE, "Item name"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_ITEM_ITEM1: clearArray(); return true; default: return false; } } 

通过使用这种方法,您可以避免创build不必要的对象(侦听器),而且我也发现这些代码更易于阅读和理解。

像这样的东西可能会工作:

 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给了我们一个方便的方法add() ,它允许你添加一个MenuItem。 所以我们做一个。 然后,我们将一个OnMenuItemClickListener分配给MenuItem并重写它的onMenuItemClick()来完成我们想要的操作。

以编程方式,我能够使用下面的代码创build一个简单的菜单。

 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); }