2012-05-26 12 views
13

Mam problem w prostej sprawie (przynajmniej tak to wygląda). Chcę dynamicznie utworzyć podmenu dla menu kontekstowego i dostarczyć każdemu elementowi radiobox. Zrobiłem wiele prób. Gdy zadzwonię pod numer menu.setGroupCheckable(0, true, true), gdzie 0 jest domyślnie menu, to wyświetla przyciski radiowe po prawej stronie każdego elementu menu zgodnie z oczekiwaniami, ale potrzebuję tego dla podmenu. Tak mam następujący kod:Jak utworzyć podmenu za pomocą przycisków radiowych w systemie 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); 

W tym przypadku nie widzę ani radioboxów, ani pól w podmenu. Potem napisał następujący kod:

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

To sprawia podmenu mieć pole wyboru w każdej pozycji, a pola wyboru pracować wyłącznie, ale chcę radioboxes, bo wyglądają bardziej intuicyjnie do wyłącznego wyboru.

Jak to osiągnąć?

+0

pamiętać, że menu kontekstowe są zanika na korzyść kontekstowych trybów działania na pasku działań. – CommonsWare

+2

Nadal stosuje się do podmenu dołączonego do elementu ActionProvider na pasku akcji. – aap

Odpowiedz

10

Dowiedziałem się, że grupy menu i podmenu są przetwarzane osobno, czyli grupa tworzona w podmenu, należy adresować za pomocą podmenu, a nie za pośrednictwem menu najwyższego poziomu. Więc rozwiązaniem jest zadzwonić:

sub.setGroupCheckable(1, true, true); 

Ten kod działa zgodnie z oczekiwaniami, czyli pozycji w podmenu występów radiobuttons zamiast wyboru.

14

Ustaw checkableBehavior w xml na pojedynczy. Oto kod:

<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

Ponadto upewnij się, że podelementy nie mają ustawionego atrybutu checkable. – Clyde

Powiązane problemy