Подтвердить что ты не робот

Toolbar.inflateMenu, кажется, ничего не делает

Im в настоящее время возится с новой библиотекой AppCompat, принося материальную конструкцию старым устройствам.

Настройка панели инструментов в качестве панели действий отлично подходит для меня, но панель инструментов ничего не делает при вызове inflateMenu(int resId). Из документов я думал, что это заменить getMenuInflater().inflate(int resId), вызванный onCreateOptionsMenu. Если я сделаю последнее, элементы меню будут правильно завышены и добавлены на панель инструментов, но надутьMenu, кажется, ничего.

Что мне не хватает?

Код действия:

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;
}

Спасибо заранее!

4b9b3361

Ответ 1

Если вы вызываете setSupportActionBar(), вам не нужно использовать toolbar.inflateMenu(), потому что панель инструментов действует как ваш ActionBar. Все обратные вызовы, связанные с меню, используются по умолчанию. Единственный раз, когда вам нужно позвонить toolbar.inflateMenu(), - это когда вы используете панель инструментов в качестве автономного виджета. В этом случае вам также придется обрабатывать события щелчка элемента меню через

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