Comment créer un sous-menu avec des boutons radio dans Android?

J'ai un problème dans un cas simple (au moins, ça l'ressemble). J'ai besoin de créer un sous-menu pour un menu contextuel de manière dynamique et de fournir à chaque élément une radio. J'ai fait beaucoup d'essais. Lorsque j'appelle menu.setGroupCheckable(0, true, true) , où 0 est par défaut le menu lui-même, il affiche les boutons radio à droite sur chaque élément de menu comme prévu, mais j'ai besoin de ce sous-menu. J'ai donc le code suivant:

 SubMenu sub = menu.addSubMenu(R.string.name); int count = 1000; for(String e : someList) { MenuItem item = sub.add(1, count, count, e); count++; } menu.setGroupCheckable(1, true, true); 

Dans ce cas, je ne vois ni les boîtes radio, ni les cases à cocher dans le sous-menu. Ensuite, j'ai écrit le code suivant:

 SubMenu sub = menu.addSubMenu(R.string.name); int count = 1000; for(String e : someList) { MenuItem item = sub.add(1, count, count, e); item.setCheckable(true); count++; } menu.setGroupCheckable(1, true, true); 

Cela fait que le sous-menu dispose d'une case à cocher dans chaque élément, et les cases à cocher fonctionnent exclusivement, mais je veux des boîtes radio, car elles sont plus intuitives pour une sélection exclusive.

Alors, comment cela peut-il être accompli?

  • Comment créer un menu contextuel à l'aide d'un fichier XML?
  • Android: menu contextuel en un seul clic
  • Obtenir la position de rang dans onCreateContextMenu
  • 2 Solutions collect form web for “Comment créer un sous-menu avec des boutons radio dans Android?”

    Réglez le paramètre checkableBehavior dans xml à simple. Voici un code:

     <menu> <group android:id="@+id/group" android:checkableBehavior="single"> <item android:id="@+id/menu_sort_by_name" android:title="@string/action_sort_by_name"/> <item android:id="@+id/menu_sort_by_last_edit" android:title="@string/action_sort_by_last_edit"/> </group> </menu> 

    J'ai découvert que les groupes de menus et les sous-menus sont traités séparément, c'est-à-dire un groupe formé dans un sous-menu, devraient être adressés via le sous-menu, et non via le menu de niveau supérieur. Donc, la solution est d'appeler:

     sub.setGroupCheckable(1, true, true); 

    Ce code fonctionne comme prévu, c'est-à-dire les éléments dans le sous-menu montrent les boutons radio au lieu des cases à cocher.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.