Android以编程方式创建一个简单的菜单
我试图用一个按钮来创建一个简单的菜单,该按钮将调用清除该数组的方法。我不想使用xml,因为我需要的只是一个按钮。Android以编程方式创建一个简单的菜单
事情是这样的 -
public boolean onCreateOptionsMenu(Menu menu) {
button "Clear Array";
onClick{// run method that wipes array};
return true;
}
谢谢
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;
}
}
通过使用这种方法可以避免不必要的创建对象(听众),我也觉得这个代码更易于阅读和理解。
像这样的东西可能会奏效:
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
并覆盖它的onMenuItemClick()
以完成我们想要的操作。
很好用;)谢谢 – Shmuel 2013-03-03 22:24:35
@大卫没问题。既然你只需要一个按钮(就像你在你的问题中指定的那样),这很好,并且占用较少的代码。但正如保罗所说,如果你有多个按钮,建议你遵循这种方法。 – 2013-03-03 22:26:24
以编程方式,我能够使用下面的代码创建一个简单的菜单。
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);
}
我也喜欢这个。绝对要在将来使用 – Shmuel 2013-03-03 22:26:52
+1,但是:在Android 4上?编译器错误,因为break语句后返回。我会尽力编辑它,完成 – 2013-04-09 08:03:30
谢谢,错过了。 – Paul 2013-04-09 20:30:20