Ich versuche, einen Aktionsleisten-Menüeintrag für eine bestimmte Zeit auszublenden, während eine Aufgabe im Hintergrund ausgeführt wird activity
.Änderung der Sichtbarkeit des Android-Menüelements in der Laufzeit
Zuerst in der onPrepareOptionsMenu
Methode der Aktivität, ich die MenuItem
Instanz als ein Feld abrufen.
Später benutze ich dieses Feld, um es unsichtbar und wieder sichtbar zu machen (mit der setVisible Methode).
Ich fragte mich, ob das ein guter Ansatz ist oder sollte ich irgendwie die invalidateOptionsMenu()
verwenden, um es wieder sichtbar zu machen? Kann ich auf Nullzeiger-Ausnahmen stoßen?
Danke.
Vielen Dank für die Antwort. Sagen Sie, dass das MenuItem-Feld möglicherweise null wird? Wenn Sie das richtig verstehen, empfehlen Sie, ein boolesches Feld zu verwenden, um den Status des Menüelements zu überprüfen. – svahidhoss
Ich würde es vermeiden, darüber so zu denken, dass Dinge "null" werden. Stellen Sie sich stattdessen Folgendes vor: Jedes Mal, wenn onPrepareOptionsMenu() 'ausgeführt wird, verfügen Sie über einige Menü- und Menüelemente, und Sie haben einen bestimmten Programmstatus. Holen Sie sich die Menüelemente, die Ihnen wichtig sind, mit 'menu.findItem()', prüfen Sie, ob sie nicht null sind, und aktualisieren Sie sie dann (z. B. 'item.setVisible()') basierend auf dem Programmstatus. Und ja, ich würde einen booleschen Wert verwenden ... etwas wie 'saveVisible = true; supportInvalidateOptionsMenu(); 'gefolgt von' MenuItem save = menu.findItem (R.id.save); if (speichern! = null) {save.setVisible (saveVisible); } ' –
Ja, das ist, was ich getan habe! Verwenden eines Felds zum Überprüfen des Status (sichtbar/teilbar) und Aufrufen des invalidateOptionMenu, um das menuItem basierend auf diesem Feld zu aktualisieren, wenn dies erforderlich war. – svahidhoss