Exemplo n.º 1
0
  public boolean performItemAction(MenuItem item, int flags) {
    MenuItemImpl itemImpl = (MenuItemImpl) item;

    if (itemImpl == null || !itemImpl.isEnabled()) {
      return false;
    }

    boolean invoked = itemImpl.invoke();

    final ActionProvider provider = item.getActionProvider();
    final boolean providerHasSubMenu = provider != null && provider.hasSubMenu();
    if (itemImpl.hasCollapsibleActionView()) {
      invoked |= itemImpl.expandActionView();
      if (invoked) close(true);
    } else if (itemImpl.hasSubMenu() || providerHasSubMenu) {
      close(false);

      if (!itemImpl.hasSubMenu()) {
        itemImpl.setSubMenu(new SubMenuBuilder(getContext(), this, itemImpl));
      }

      final SubMenuBuilder subMenu = (SubMenuBuilder) itemImpl.getSubMenu();
      if (providerHasSubMenu) {
        provider.onPrepareSubMenu(subMenu);
      }
      invoked |= dispatchSubMenuSelected(subMenu);
      if (!invoked) close(true);
    } else {
      if ((flags & FLAG_PERFORM_NO_CLOSE) == 0) {
        close(true);
      }
    }

    return invoked;
  }
Exemplo n.º 2
0
  public SubMenu addSubMenu(int group, int id, int categoryOrder, CharSequence title) {
    final MenuItemImpl item = (MenuItemImpl) addInternal(group, id, categoryOrder, title);
    final SubMenuBuilder subMenu = new SubMenuBuilder(mContext, this, item);
    item.setSubMenu(subMenu);

    return subMenu;
  }
Exemplo n.º 3
0
 @Override
 public SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title) {
   final MenuItem item =
       new MenuItemImpl(mContext)
           .setGroupId(groupId)
           .setItemId(itemId)
           .setOrder(order)
           .setTitle(title);
   final SubMenu subMenu = new SubMenuImpl(mContext, item);
   ((MenuItemImpl) item).setSubMenu(subMenu);
   if (order != 0) {
     mMenuItems.add(order, item);
   } else {
     mMenuItems.add(item);
   }
   return subMenu;
 }