Toolbar.inflateMenu seems to do nothing
Asked Answered
H

1

61

Im currently messing arround with the new AppCompat library bringing material design to older devices.

Setting a toolbar as actionbar works fine for me, but the toolbar seems to not do anything on calling inflateMenu(int resId). From the docs, i thought this is to replace getMenuInflater().inflate(int resId) called from onCreateOptionsMenu. If I do the latter, the menu items are correctly inflated and added to the toolbar, but inflateMenu seems to to nothing.

What am I missing?

Activity Code:

Toolbar toolbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    toolbar.inflateMenu(R.menu.main); // this does nothing at all
    setSupportActionBar(toolbar);
}

// this works
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

Thanks in advance!

Halicarnassus answered 22/10, 2014 at 16:5 Comment(0)
W
110

If you are calling setSupportActionBar() you don't need to use toolbar.inflateMenu() because the Toolbar is acting as your ActionBar. All menu related callbacks are via the default ones. The only time you need to call toolbar.inflateMenu() is when you are using the Toolbar as a standalone widget. In this case you will also have to handle menu item click events via

toolbar.setOnMenuItemClickListener(
        new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                // Handle menu item click event
                return true;
            }
});
Withstand answered 22/10, 2014 at 16:13 Comment(4)
Thanks for the clarification. So inflateMenu seems to be only relevant/working for toolbars that are not set as ActionBar.Halicarnassus
In a standard (non-standalone widget) I am seeing that onCreateOptionsMenu is not called until after onResume!!! This breaks my current technique of using onCreateOptionsMenu to populate member fields of custom views in the toolbar before onResume is called. Any idea what is going wrong or how to do this?Exalt
I am using setSupportActionBar. How do I show action items on the toolbar if I'm not inflating the menu??Scorpius
If you really want to use toolbar.inflateMenu(), you can follow this answer: https://mcmap.net/q/159413/-how-to-set-menu-to-toolbar-in-androidSymphonize

© 2022 - 2024 — McMap. All rights reserved.