Eine Android-Gerätekonfiguration ändern (zum Beispiel "schieben Sie die harte Tastatur wieder in") ruft immer PhoneWindow.onConfigurationChanged()
, die wiederum reopenMenu()
aufrufen wird. Dies führt dazu, dass das Menü der aktuell laufenden Aktivität wieder geöffnet wird, falls es angezeigt wird.Wie programmiere ich programmgesteuert, ob das Menü meiner Aktivität zu einem bestimmten Zeitpunkt angezeigt wird?
Ich habe eine Sperre auf meinem Menü implementiert in meinem onPrepareOptionsMenu()
Override. Der Benutzer muss jedes Mal, wenn er das Menü sehen möchte, einen Code eingeben. Ich möchte nicht, dass der Benutzer aufgefordert wird, den Code erneut einzugeben, während das Menü nur wegen einer Konfigurationsänderung noch geöffnet ist. Daher würde ich gerne wissen, ob ich irgendwie überprüfen kann, ob das Menü der aktuellen Vordergrundaktivität bereits angezeigt wird. Wenn ich das weiß, kann ich den Zugangscode umgehen, wenn das Menü bereits geöffnet ist.
Meine individuelle Abhilfe Implementierung ist meine eigene Flagge menuShowing
zu verwenden, die ich in onPrepareOptionsMenu
gesetzt und zurückgesetzt in onOptionsItemSelected
und in onKeyDown
wenn die Zurück-Taste angeklickt wird.
EDIT:
Es scheint, dass eine Konfigurationsänderung der Bildschirmausrichtung dieses Verhalten nicht auslöst. Eine harte Tastaturfolie tut dies jedoch.
Nach meinen verschiedenen Anstrengungen, ich glaube, Ihr individuelle boolean Ansatz am besten ist. Sie können es vielleicht mit 'onPrepareOptionsMenu()': true und 'onOptionsMenuClosed()': false vereinfachen (da dies entweder durch Auswählen eines Elements oder Drücken einer harten Taste aufgerufen wird: Zurück, Home, Menü). Zu Ihrer Information: Sie können eine Art harte Tastaturfolie im Emulator unterstützen, indem Sie die Hardware-Eigenschaften so einstellen, dass keine harte Tastatur im Hochformat und keine im Querformat vorhanden ist, sollte dies nützlich sein. – Sam