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 文件,但似乎啥也没发生

Phonegap build android啥也没做

hexo的next主题变成 似乎是德语了,我啥也没做,原本是英语,如何...

android 两种方式设置toolbar

Android Toolbar如何上面添加menu

2/12 啥也没学