2012-05-26 14 views
13

Tengo un problema en un caso simple (al menos, parece que sí). Necesito crear un submenú para un menú contextual dinámicamente y proporcionar a cada elemento una radio. Hice muchas pruebas. Cuando llamo al menu.setGroupCheckable(0, true, true), donde 0 es el menú predeterminado, muestra los botones de opción a la derecha en cada elemento del menú como se esperaba, pero lo necesito para el submenú. Así que tengo el siguiente código:¿Cómo crear un submenú con botones de radio en Android?

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 casillas de verificación en el submenú. Entonces escribí el siguiente código:

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ú tener una casilla de verificación en cada artículo, y las casillas de verificación Trabajo exclusivamente, pero quiero radioboxes, porque se ven de forma más intuitiva para la selección exclusiva.

Entonces, ¿cómo se puede lograr esto?

+0

tener en cuenta que los menús de contexto se están desvaneciendo, a favor de los modos de acción contextuales en la barra de acción. – CommonsWare

+2

Aún se aplica al SubMenú que va con un Proveedor de Acción en la barra de acciones. – aap

Respuesta

10

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

sub.setGroupCheckable(1, true, true); 

Este código funciona como se espera, es decir elementos del submenú Mostrar botones de radio en lugar de casillas de verificación.

14

Establezca el comportamiento verificable en xml en single. Aquí hay 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> 
+1

Además, asegúrese de que los subelementos no tengan su conjunto de atributos seleccionables. – Clyde

Cuestiones relacionadas