Cómo crear un submenú con botones de radio en Android?

Tengo un problema en un caso simple (al menos, parece así). Necesito crear un submenú para un menú contextual dinámicamente y proporcionar cada elemento con un radiobox. Hice muchos ensayos. Cuando llamo menu.setGroupCheckable(0, true, true) , donde 0 es por defecto el menú en sí, muestra los botones de radio a la derecha en cada elemento del menú como se espera, pero necesito esto para el submenú. Así que tengo el código siguiente:

 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); 

En este caso no veo ni radioboxes ni cuadros de verificación en el submenú. Entonces escribí el código siguiente:

 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); 

Esto hace que el submenú tenga una casilla de verificación en cada ítem, y las casillas de verificación funcionen exclusivamente, pero quiero radioboxes, porque se ven más intuitivamente para la selección exclusiva.

Entonces, ¿cómo puede lograrse esto?

Establecer el checkableBehavior en xml a solo. Aquí está un código:

 <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> 

Me enteré de que los grupos de menús y submenús se procesan por separado, que es un grupo formado en un submenú, debe ser dirigido a través del submenú, no a través del menú de nivel superior. Así que la solución es llamar:

 sub.setGroupCheckable(1, true, true); 

Este código funciona como se espera, es decir elementos en el submenú mostrar radiobuttons en lugar de checkboxes.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.