我目前正在使用新的AppCompat库,将材料设计引入旧设备。
将工具栏设置为操作栏对我来说很好,但工具栏似乎在调用inflateMenu(int resId)
时没有做任何事情。从文档中,我认为这是替换从onCreateOptionsMenu调用的getMenuInflater().inflate(int resId)
。
如果我做后者,菜单项正确膨胀并添加到工具栏,但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;
}
提前致谢!
答案 0 :(得分:96)
如果您致电setSupportActionBar()
,则无需使用toolbar.inflateMenu()
,因为工具栏充当您的ActionBar。所有与菜单相关的回调均通过默认回调。您需要调用toolbar.inflateMenu()
的唯一时间是将工具栏用作独立窗口小部件。在这种情况下,您还必须通过
toolbar.setOnMenuItemClickListener(
new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// Handle menu item click event
return true;
}
});