web-dev-qa-db-ja.com

Toolbar.inflateMenuは何もしないようです

私は現在、古いデバイスにマテリアルデザインをもたらす新しい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;
}

前もって感謝します!

49
danijoo

setSupportActionBar()を呼び出している場合、toolbar.inflateMenu()を使用する必要はありません。これは、ツールバーがActionBarとして機能しているためです。すべてのメニュー関連のコールバックは、デフォルトのものを介しています。 toolbar.inflateMenu()を呼び出す必要があるのは、ツールバーをスタンドアロンウィジェットとして使用しているときだけです。この場合、メニュー項目のクリックイベントも次の方法で処理する必要があります。

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