android - Toolbar.inflateMenu 似乎什么也没做

标签 android android-appcompat material-design android-toolbar

我目前正在使用新的 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(),因为 Toolbar 正在充当您的 ActionBar。所有菜单相关的回调都是通过默认的回调。唯一需要调用 toolbar.inflateMenu() 的情况是当您将工具栏用作独立小部件时。在这种情况下,您还必须通过

处理菜单项点击事件
toolbar.setOnMenuItemClickListener(
        new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                // Handle menu item click event
                return true;
            }
});

关于android - Toolbar.inflateMenu 似乎什么也没做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26511981/

相关文章:

android - 无法使用 intellij IDEA 12.04 CE 编译引用 AndEngine GLES2 的 android 应用程序

android - React-Native:新项目的空白屏幕

java - 在 Java 中使 Android 手机静音

Android 支持存储库和持续集成

android - AppCompat 中的半透明 ActionBar

android.support.v7.widget.Toolbar VectorDrawableCompat 使用支持库时出现 IllegalStateException 24+

twitter-bootstrap-3 - 为什么我应该开始使用 Google Material Design Lite 而不是 Twitter Bootstrap 或 Foundation

java - 如何在不同的类中使用一个类的 String 数组,以免代码行数过多

android - 网络图像适合卡片而不会丢失卡片形状, GridView 在 flutter 中

css - Material Design 图标未在浏览器中显示