私は現在、古いデバイスにマテリアルデザインをもたらす新しい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;
}
前もって感謝します!
setSupportActionBar()
を呼び出している場合、toolbar.inflateMenu()
を使用する必要はありません。これは、ツールバーがActionBarとして機能しているためです。すべてのメニュー関連のコールバックは、デフォルトのものを介しています。 toolbar.inflateMenu()
を呼び出す必要があるのは、ツールバーをスタンドアロンウィジェットとして使用しているときだけです。この場合、メニュー項目のクリックイベントも次の方法で処理する必要があります。
toolbar.setOnMenuItemClickListener(
new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// Handle menu item click event
return true;
}
});