I came across this problem while working on my first Wear OS (Android Wear 2.0) App. I had to change the options displayed in an Action Drawer depending on the state the application is currently in.

First I tried hiding and displaying options to the linked menu:


This had no effect on the menu.
Adding Groups to the Menu.xml and controlling their visibility is also not possible, because this is (not yet) implemented in WearOS.
Another idea was to remove and re-adding Options to the menu.
This is in theory possible by calling




In practice, it appeared to be very cumbersome to add Icons, other data and Listeners to the menu items programmatically, so I used this slightly hacky way:


We only use one item in our menu.xml to alternatively present both menu options.
Add something like this to the onResume Hook of your Activity. showFirstMenu is a flag that indicates which menu alternative you want to present.

protected void onResume() {
  Menu menu = mWearableActionDrawer.getMenu();


The idea here is to only change the icon and title of the menu item, without adding or removing it.
In my example, I only use this on one menu Item but this can be done with as many as you like.

Now, that the menu looks right, we still have to consider the onClickListeners: After all, you probably do not want to execute the same action on both menu items.

Let your Activity implement MenuItem.OnMenuItemClickListener
and override the onMenuClick Method:

    public boolean onMenuItemClick(MenuItem item) {
        Intent intent;
        if(item.getTitle() == getString(R.string.menu_first_option)){
            intent = new Intent(this, FirstActivity.class);
            return true;
        else if (item.getTitle() == getString(R.string.menu_second_option)){
            intent = new Intent(this, SecondActivity.class);
            return true;
        return false;


Normally, you would identify the target of the click by comparing the ID of the item to the ID in the menux.xml. We can't do this here, because we are using the same menu item for both options.
Instead, we find out which option the user has clicked by comparing the title of the item to all possible Title Strings. After that, we can react accordingly by starting a new Activity or anything you want.
Be sure to save the Title Strings in your resources to prevent errors with Strings that don't match.