47 votes

Android ajoutant un sous-menu à un menuItem, où est addSubMenu()?

Je souhaite ajouter un sous-menu à l’intérieur de mon OptionsMenu à un menuItem, par programme en fonction de mes paramètres. J’ai vérifié « MenuItem » dans le sdk Android et il n’y a pas de méthode addSubMenu()!, bien que vous puissiez trouver « hasSubMenu() » et « getSubMenu ».

Envisageait de le faire dans onCreateOptionsMenu:

Comment créer un sous-menu dans un élément de menu dans le code ?

75voto

ruhalde Points 1160

Parfois, l’étrangeté Android est vraiment incroyable (et amusante ..). Je l’ai résolu de cette façon:

a) Définissez en XML un espace réservé de sous-menu comme ceci :

b) Obtenir l’élément de sous-menu dans OnCreateOptionsMenu, effacez-le et ajoutez mes éléments de sous-menu, comme ceci:

34voto

Einar H. Points 71

Je sais que c’est une vieille question, mais je viens de rencontrer ce problème moi-même. La façon la plus simple de le faire semble être de simplement spécifier l’élément lui-même en tant que sous-menu, puis de l’ajouter à cet élément. Par exemple :

25voto

Robert Points 141

Voici une réponse complète qui s’appuie sur l’idée d’utiliser un espace réservé, mais utilise principalement xml pour ajouter le sous-menu.

Si vous avez un menu comme celui-main_menu.xml:

Créez un autre menu sub_menu.xml qui sera utilisé dans my_menu_item :

Dans votre menu onCreateOptions :

Cette solution est intéressante puisque le gonfleur gère la majeure partie du travail.

19voto

Phil Points 11964

La meilleure façon de le faire est dans votre fichier de menu xml. Vous pouvez le faire en créant un nouvel objet à l’intérieur d’un :

0voto

Mick Points 447

Pour fournir un exemple complet de la réponse de Phil, voici mon XML complet et fonctionnel pour un menu avec deux choix, dont chacun est un menu avec trois choix. J’ai l’intention d’ajouter un troisième menu au niveau supérieur ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X