59

我目前正在使用新的 AppCompat 库为旧设备带来材料设计。

将工具栏设置为操作栏对我来说很好,但工具栏似乎在调用inflateMenu(int resId). 从文档中,我认为这是替换getMenuInflater().inflate(int resId)从 onCreateOptionsMenu 调用的。如果我做后者,菜单项会正确膨胀并添加到工具栏,但 inflateMenu 似乎什么都没有。

我错过了什么?

活动代码:

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;
}

提前致谢!

4

1 回答 1

110

如果您正在调用 setSupportActionBar(),则不需要使用toolbar.inflateMenu(),因为 Toolbar 充当您的 ActionBar。所有菜单相关的回调都是通过默认的回调。唯一需要调用toolbar.inflateMenu()的是当您将工具栏用作独立小部件时。在这种情况下,您还必须通过处理菜单项单击事件

toolbar.setOnMenuItemClickListener(
        new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                // Handle menu item click event
                return true;
            }
});
于 2014-10-22T16:13:20.790 回答