Toolbar.inflateMenu scheint nichts zu tun

Lesezeit: 2 Minuten

Benutzer-Avatar
Danijoo

Ich spiele gerade mit der neuen AppCompat-Bibliothek herum, die Materialdesign auf ältere Geräte bringt.

Das Festlegen einer Symbolleiste als Aktionsleiste funktioniert für mich einwandfrei, aber die Symbolleiste scheint beim Aufrufen nichts zu tun inflateMenu(int resId). Aus den Dokumenten ging ich davon aus, dass dies ersetzt werden soll getMenuInflater().inflate(int resId) aufgerufen von onCreateOptionsMenu. Wenn ich letzteres mache, werden die Menüelemente korrekt aufgeblasen und der Symbolleiste hinzugefügt, aber inflateMenu scheint nichts zu tun.

Was vermisse ich?

Aktivitätscode:

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

Danke im Voraus!

Wenn Sie anrufen setSupportActionBar() Sie müssen nicht verwenden toolbar.inflateMenu() weil die Symbolleiste als Ihre ActionBar fungiert. Alle menübezogenen Callbacks erfolgen über die Standard-Callbacks. Das einzige Mal, dass Sie anrufen müssen toolbar.inflateMenu() ist, wenn Sie die Toolbar als eigenständiges Widget verwenden. In diesem Fall müssen Sie auch Menüelement-Klickereignisse über behandeln

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

  • Danke für die Klarstellung. InflateMenu scheint also nur für Symbolleisten relevant zu sein / zu funktionieren, die nicht als ActionBar festgelegt sind.

    – Danijoo

    22. Oktober 2014 um 21:27 Uhr

  • In einem Standard-Widget (nicht eigenständiges Widget) sehe ich, dass onCreateOptionsMenu erst aufgerufen wird nach auf Wiederaufnahme!!! Dies unterbricht meine derzeitige Technik der Verwendung von onCreateOptionsMenu zum Auffüllen von Elementfeldern benutzerdefinierter Ansichten in der Symbolleiste, bevor onResume aufgerufen wird. Irgendeine Idee, was schief läuft oder wie man das macht?

    – schlapp

    21. Februar 2015 um 0:20 Uhr

  • ich benutze setSupportActionBar. Wie zeige ich Aktionselemente auf der Symbolleiste an, wenn ich das Menü nicht aufblähe??

    – IgorGanapolsky

    20. Mai 2015 um 20:58 Uhr

  • Wenn Sie wirklich toolbar.inflateMenu() verwenden möchten, können Sie dieser Antwort folgen: stackoverflow.com/a/63529156/2534007

    – Mohib Irshad

    21. August 2020 um 19:46 Uhr


1186520cookie-checkToolbar.inflateMenu scheint nichts zu tun

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy