2010-09-10 6 views
2

Je souhaite être automatiquement en mesure de réactiver mon application lorsque l'utilisateur quitte le menu des options. (sauf si, bien sûr, ils ont sélectionné pause ...)android onOptionsMenuClosed n'étant pas appelé pour le sous-menu

Manipulation onOptionsMenuClosed Fonctionne bien pour le menu de niveau supérieur mais n'est pas appelée pour un sous-menu. Le niveau supérieur onPanelClosed ne semble pas non plus être appelé.

Je peux détecter quand ils entrent dans le menu et s'ils font une sélection mais pas si ils viennent de cliquer sur le bouton de menu pour quitter.

Je pourrais réécrire le sous-menu entier pour utiliser une boîte de dialogue mais je préférerais ne pas pouvoir l'éviter.

Quelqu'un at-il des suggestions?

+0

Cela ressemble à un bug Android. Voir [rapport de bogue] [1]. –

+0

Merci Maya, je viens de vérifier la liste des bogues android et il y a un rapport de bogue ouvert - # 2746. Depuis qu'il est ouvert depuis août 2009 je ne retiens pas mon souffle pour un correctif ... – FixerMark

Répondre

0

Vous pouvez remplacer onKeyDown et implémenter un menu vous-même lorsque le bouton de menu est détecté.

+0

C'est certainement une option mais il ne devrait pas vraiment être nécessaire de contourner tout le système de menu pour le faire. (Et peut-être un peu risqué car ce n'est clairement pas ce que les concepteurs d'Android attendent de vous) – FixerMark

+0

Je ne vois pas pourquoi pas, comment pouvez-vous avoir un menu très stylisé? Je pense que c'est le meilleur moyen d'aller spécialement pour un match. Vous pouvez même démarrer une nouvelle activité pour obtenir un résultat avec un arrière-plan transparent et sombre lorsque vous détectez le menu. – schwiz

+0

Notez que vous pouvez quitter le menu simplement en tapant n'importe où sur l'écran, vous ne devez pas nécessairement appuyer à nouveau sur le bouton de menu, donc cela ne fonctionnera pas dans tous les cas. –

1

Vous pouvez surcharger l'onkeydown, définir un indicateur pour vérifier si le menu est affiché ou non, puis retourner super.onKeyDown (keyCode, event); .

Vous pouvez vérifier si le menu est à l'écran à chaque touche. Gardez à l'esprit que les autres boutons (Retour, recherche et accueil et toucher sur une autre partie de l'écran ferme le menu.) .Autres boutons, vous pouvez les manipuler mais botton à la maison et le robinet du doigt ne peut pas être prioritaire.

Si je vous i whould oublier le @Override sur l'option onkeydown à cette fin

Mais vous pouvez avoir 6 boutons de menu du 6th appelé « Plus » et qui pourrait créer un dialogue personnalisé avec plus d'options que vous pouvez gérer

Questions connexes