定义一个Activity菜单
重写Activity的onCreateOptionsMenu方法来为Activity定义一个菜单。这个方法在Activity的菜单第一次显示时触发。
onCreateOptionsMenu收到一个Menu对象的参数。你可以存储Menu的引用,在onCreateOptionsMenu下一次调用之前,在你的代码的任何地方使用。
你应该总是调用基类的实现,因为它会酌情的自动包含一些额外的系统菜单选项。
使用Menu对象的add方法来填入菜单。为每一个菜单项,你需要指定:
❑ 组ID,用来分开属于不同组的处理和分类的菜单项
❑ 独一无二的菜单项ID。因为效率的原因,菜单项的选择一般都是由onOptionsItemSelected事件处理器处理。所以,这个独一无二的ID非常重要,用来判断哪个菜单项被按下。定义每个菜单项ID作为Activity类的静态变量是很方便的。你可以使用Menu.First静态变量,并通过简单的增加值来给下一个项。
❑ 菜单项的顺序值。用来定义子菜单显示的位置。
❑ 菜单文本,可以是字符串或者字符串资源
当你完成菜单的填入工作,返回True来允许Android显示菜单。
接下来的代码片段显示了如果添加一个菜单项到Activity菜单中:
static final private int MENU_ITEM = Menu.FIRST;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
// Group ID
int groupId = 0;
// Unique menu item identifier. Used for event handling.
int menuItemId = MENU_ITEM;
// The order position of the item
int menuItemOrder = Menu.NONE;
// Text to be displayed for this menu item.
int menuItemText = R.string.menu_item;
// Create the menu item and keep a reference to it.
MenuItem menuItem = menu.add(groupId, menuItemId,
menuItemOrder, menuItemText);
return true;
}
和Menu对象相同,调用add方法会返回一个菜单项引用,它直到下一次调用onCreateOptionsMenu方法之前有效。与其维护每一个菜单项的引用,不如使用Menu.findItem方法,通过传入菜单项ID来获取特定的菜单项。