Toolbar.inflateMenu изглежда не прави нищо

В момента се забърквам с новата библиотека AppCompat, която предоставя материален дизайн на по-стари устройства.

Задаването на лента с инструменти като лента за действие работи добре за мен, но лентата с инструменти изглежда не прави нищо при извикване на inflateMenu(int resId). От документите реших, че това е да замени getMenuInflater().inflate(int resId), извикан от onCreateOptionsMenu. Ако направя последното, елементите от менюто са правилно раздути и добавени към лентата с инструменти, но 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;
}

Благодаря предварително!


person danijoo    schedule 22.10.2014    source източник


Отговори (1)


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

toolbar.setOnMenuItemClickListener(
        new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                // Handle menu item click event
                return true;
            }
});
person MrEngineer13    schedule 22.10.2014
comment
Благодаря за пояснението. Така че inflateMenu изглежда е подходящ/работещ само за ленти с инструменти, които не са зададени като ActionBar. - person danijoo; 23.10.2014
comment
В стандартна (несамостоятелна джаджа) виждам, че onCreateOptionsMenu не се извиква до след onResume!!! Това нарушава моята текуща техника за използване на onCreateOptionsMenu за попълване на полета на потребителски изгледи в лентата с инструменти, преди да бъде извикан onResume. Някаква идея какво се обърка или как да направя това? - person swooby; 21.02.2015
comment
Използвам setSupportActionBar. Как да покажа елементи за действие в лентата с инструменти, ако не раздувам менюто?? - person IgorGanapolsky; 20.05.2015
comment
Ако наистина искате да използвате toolbar.inflateMenu(), можете да следвате този отговор: stackoverflow.com/a/63529156/2534007 - person Mohib Irshad; 21.08.2020