Toolbar.inflateMenu似乎什么都不做

目前,我正在将新的AppCompat库带到老设备的材料devise周围。

设置一个工具栏作为操作栏工作正常,但工具栏似乎没有做任何事情调用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; } 

提前致谢!

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

 toolbar.setOnMenuItemClickListener( new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { // Handle menu item click event return true; } });