2 Stimmen

ActionBarSherlock - Das Überlaufmenü erscheint nicht beim ersten Start auf 2.x-Geräten, wenn setHasOptionsMenu true auf Fragmenten verwendet wird

Wenn hasSetOptionsMenu für Fragmente wahr ist, wird das Überlaufmenü nicht jedes Mal beim ersten Start unter OS 2.x angezeigt. Das Drehen des Geräts behebt das Problem. Außerdem ist das Problem unter 3.x oder 4.x nicht reproduzierbar.

Ich verwende die Version 4.1 der ActionBarSherlock, und die FragmentActivity, die die Fragmente enthält, hat ein Forceoverflow-Thema.

Ich habe versucht, hasSetOptionsMenu auf false zu setzen, und das scheint das Problem zu lösen, aber ich muss für jedes Fragment einen anderen Menüpunkt hinzufügen, also wäre das keine Option für mich.

Beim Debuggen der App scheint es, dass das Menü für jedes hasSetOptionsMenu(true) in der App ungültig gemacht wird, und das onCreateOptionsMenu der Aktivität und des Fragments wird neu erstellt. Interessant ist auch, dass während des Debuggens der Start der App verzögert wird, da sie an verschiedenen Haltepunkten anhält und dadurch das Überlaufmenü erscheint. Dies überzeugt mich, dass es sein könnte dieses Thema in Android SDK gemeldet, aber keine der in Kommentar Nr. 8 genannten Abhilfen hat bei mir funktioniert.

Eine weitere Information: Wenn man die Taste für die Hardware-Optionen drückt, wird das Überlaufmenü angezeigt, also scheint das Problem darin zu liegen, dass das Überlaufsymbol nicht angezeigt wird.

Außerdem habe ich entdeckt, dass dieses Problem auch eine gemeldeter Fehler in ABS, aber es scheint geschlossen als behoben und ich habe die letzte Version der Bibliothek.

Ist das schon einmal jemandem aufgefallen? Und kennen Sie eine Abhilfe/Fix für dieses Problem?

0voto

Mihaela Romanca Punkte 1310

Lösen Sie es! Ich habe "getSherlock().dispatchInvalidateOptionsMenu();" in onResume() für die FragmentActivity hinzugefügt, um die Invalidierung des Menüs zu erzwingen. Dies scheint das Problem gelöst zu haben. Ich weiß, dass dies ein Hack ist, aber ich habe keine andere Lösung gefunden. Ich habe versucht, die Menüinvalidierung zu den Fragmenten hinzuzufügen (onCreateView oder onActivityCreated), aber das hat das Problem nicht gelöst. Also, wenn Sie dieses Problem auftreten, ist dies ein Workaround für sie:

    @Override
    protected void onResume() {
        super.onResume();

        .....
        getSherlock().dispatchInvalidateOptionsMenu();
    }

Danke Marco für den Tipp!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X