我目前正在将新的AppCompat库混入周围,从而将 Material 设计带入了较旧的设备。
将工具栏设置为操作栏对我来说很好用,但是在调用inflateMenu(int resId)
时,该工具栏似乎无能为力。从文档中,我认为这将替换从onCreateOptionsMenu调用的getMenuInflater().inflate(int resId)
。
如果我选择后者,则菜单项会正确膨胀并添加到工具栏,但是inflateMenu似乎什么也没有。
我想念什么?
Activity 代码:
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;
}
提前致谢!
最佳答案
如果您要调用setSupportActionBar()
,则无需使用toolbar.inflateMenu()
,因为工具栏将充当您的ActionBar。所有与菜单相关的回调均通过默认回调。唯一需要调用toolbar.inflateMenu()
的时间是将工具栏用作独立窗口小部件时。在这种情况下,您还必须通过以下方式处理菜单项的单击事件
toolbar.setOnMenuItemClickListener(
new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// Handle menu item click event
return true;
}
});