web-dev-qa-db-fra.com

Toolbar.inflateMenu semble ne rien faire

Je suis actuellement en train de jouer avec la nouvelle bibliothèque AppCompat apportant la conception matérielle aux appareils plus anciens.

Définir une barre d'outils comme barre d'action fonctionne bien pour moi, mais la barre d'outils semble ne rien faire lors de l'appel de inflateMenu(int resId). D'après les documents, je pensais que c'était pour remplacer getMenuInflater().inflate(int resId) appelé depuis onCreateOptionsMenu. Si je fais ce dernier, les éléments de menu sont correctement gonflés et ajoutés à la barre d'outils, mais inflateMenu ne semble rien.

Qu'est-ce que je rate?

Code d'activité:

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

Merci d'avance!

49
danijoo

Si vous appelez setSupportActionBar() vous n'avez pas besoin d'utiliser toolbar.inflateMenu() car la barre d'outils agit comme votre ActionBar. Tous les rappels liés au menu se font par défaut. La seule fois que vous devez appeler toolbar.inflateMenu() est lorsque vous utilisez la barre d'outils en tant que widget autonome. Dans ce cas, vous devrez également gérer les événements de clic des éléments de menu via

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