Toolbar.inflateMenu 似乎啥也没做
Posted
技术标签:
【中文标题】Toolbar.inflateMenu 似乎啥也没做【英文标题】:Toolbar.inflateMenu seems to do nothingToolbar.inflateMenu 似乎什么也没做 【发布时间】:2014-12-18 04:05:11 【问题描述】:我目前正在使用新的 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;
提前致谢!
【问题讨论】:
【参考方案1】:如果您调用setSupportActionBar()
,则不需要使用toolbar.inflateMenu()
,因为工具栏充当您的操作栏。所有菜单相关的回调都是通过默认的回调。唯一需要调用toolbar.inflateMenu()
的时间是当您将工具栏用作独立小部件时。在这种情况下,您还必须通过
toolbar.setOnMenuItemClickListener(
new Toolbar.OnMenuItemClickListener()
@Override
public boolean onMenuItemClick(MenuItem item)
// Handle menu item click event
return true;
);
【讨论】:
感谢您的澄清。所以 inflateMenu 似乎只与未设置为 ActionBar 的工具栏相关/工作。 在标准(非独立小部件)中,我看到 onCreateOptionsMenu 直到 after onResume 才被调用!!!这打破了我目前使用 onCreateOptionsMenu 在调用 onResume 之前在工具栏中填充自定义视图的成员字段的技术。知道出了什么问题或如何做到这一点吗? 我正在使用setSupportActionBar
。如果我不膨胀菜单,如何在工具栏上显示操作项??
如果你真的想使用toolbar.inflateMenu(),你可以按照这个答案:***.com/a/63529156/2534007以上是关于Toolbar.inflateMenu 似乎啥也没做的主要内容,如果未能解决你的问题,请参考以下文章
设置一个新的 Cron 来运行一个 PHP 文件,但似乎啥也没发生