onCreateOptionsMenu wird nie aufgerufen

Lesezeit: 3 Minuten

Benutzer-Avatar
Bart Friedrichs

Ich habe einige Probleme, ein Optionsmenü in Android zum Laufen zu bringen. Ich habe schon früher Apps erstellt, und sie haben alle gut funktioniert, aber jetzt wird das Menü einfach nicht angezeigt.

Der Code:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);

    getMenuInflater().inflate(R.menu.activity_video, menu);
    return true;
}

die ganze Methode wird nicht einmal aufgerufen (überprüft durch Setzen eines Breakpoints). Die Aktivität ist super einfach, sie hat nur eine VideoView darin, mit einem OnTouchListener einstellen.

Ich verwende Android 4.0.4 auf einem Samsung Galaxy 10.1, API-Level 15, minSDK 15. Übersehe ich etwas?

  • Welches Theme verwendest du? Sie erhalten kein Menü, wenn Sie den Vollbildmodus verwenden …

    – Warpzit

    7. November 2012 um 9:44 Uhr

  • Keine Titelleiste: android:theme="@android:style/Theme.Black.NoTitleBar"ich habe es mit Erfolg für andere Apps verwendet.

    – Bart Friedrichs

    7. November 2012 um 9:45 Uhr

  • Humor mich und versuche es auf etwas wie Holo usw. einzustellen.

    – Warpzit

    7. November 2012 um 9:47 Uhr

  • Recht. In Holo wird es aufgerufen.

    – Bart Friedrichs

    7. November 2012 um 9:48 Uhr

  • Dies könnte relevant sein: stackoverflow.com/q/8970083/969325

    – Warpzit

    7. November 2012 um 9:56 Uhr

Benutzer-Avatar
Martin Cazares

In den neuesten Versionen von Android passiert dies bei Verwendung der Kompatibilitätsbibliothek für die Symbolleiste sehr häufig. Damit die Menüelemente in der Symbolleiste angezeigt werden, müssen Sie Folgendes tun:

mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);

Benutzer-Avatar
Noahutz

Anruf setHasOptionsMenu Funktion ab onCreate Erste. Das onCreateOptionsMenu wird automatisch aufgerufen.

Versuche dies:

setHasOptionsMenu(true)

  • Dies gilt nur für Fragmente. Viele weitere Tipps und Tricks im Zusammenhang mit dem Optionsmenü und Fragmenten finden Sie hier: stackoverflow.com/questions/6279571/…

    – RenniePet

    23. Oktober 2014 um 19:00 Uhr

  • Dies hat bei mir bei der Verwendung von Fragmenten nicht funktioniert. – 27.12.2017

    – der Lernende

    27. Dezember 2017 um 21:20 Uhr

Wenn das Telefon, auf dem Sie testen, eine Menüschaltfläche hat, wird onCreateOptionsMenu nicht aufgerufen, wenn Sie mit dem Design beginnen:

android:theme="@android:style/Theme.Black.NoTitleBar"

Aber wenn Sie auf die Menüschaltfläche klicken onCreateOptionsMenu wird angerufen werden. Ich weiß nicht, was bei Telefonen ohne Hardwaretasten passiert …

  • ohne Hardwaretasten wird das Menü einfach überhaupt nicht gerendert

    – Bart Friedrichs

    7. November 2012 um 10:24 Uhr

  • @BartFriederichs autsch, aber gut zu wissen. Ich hatte gehofft, da wäre was =/

    – Warpzit

    7. November 2012 um 10:33 Uhr


Benutzer-Avatar
Sterling Diaz

Bei der Methode: Fragment#onCreateView(...) du solltest setzen:

setHasOptionsMenu(true);

Dann wird Ihre Methode aufgerufen.

Benutzer-Avatar
Allen

Das liegt an der Aktivität nicht haben die Symbolleiste.

Es gibt 2 Schritte, um es zu tun.

Zuerstmüssen Sie die Symbolleiste in Ihrer activity.xml hinzufügen, die sich in res/layout befindet

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"">

    <!-- add this part-->
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        android:theme="?attr/actionBarTheme"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

Zweitelassen Sie es von Ihrer Aktivität anhängen

in Java

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

oder in Kotlin

val toolbar = findViewById<Toolbar>(R.id.toolbar)
setSupportActionBar(toolbar)

Benutzer-Avatar
LBes

Ich hatte das gleiche Problem (Menü wird nicht angezeigt, onCreateOptionsMenu nicht angerufen werden).

Wenn Sie dies innerhalb eines Fragments aufrufen, müssen Sie es überschreiben public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) nicht public boolean onCreateOptionsMenu(Menu menu). Fragments Verwenden Sie letzteres nicht, damit sie es nicht einmal anrufen.

Aktivitätsmenü

Fragment-Menü

Benutzer-Avatar
PWilson

Ich hatte das gleiche Problem. Mein Problem wurde durch Vererbung einer anderen Aktivitätsklasse gelöst.

Also hatte ich gemacht:

Die öffentliche Klasse WelcomeActivity erweitert Activity

aber geändert in:

Die öffentliche Klasse WelcomeActivity erweitert AppCompatActivity

Auf diese Weise wollte ich sagen, dass Ihrer Aktivität eine Aktionsleiste hinzugefügt werden kann.

1252470cookie-checkonCreateOptionsMenu wird nie aufgerufen

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

Privacy policy