2012-05-26 14 views
13

मुझे एक साधारण मामले में समस्या है (कम से कम, ऐसा लगता है)। मुझे एक संदर्भ मेनू के लिए गतिशील रूप से उपमेनू बनाने और प्रत्येक आइटम को रेडियोबॉक्स प्रदान करने की आवश्यकता है। मैंने बहुत सारे परीक्षण किए। जब मैं menu.setGroupCheckable(0, true, true) पर कॉल करता हूं, जहां 0 डिफ़ॉल्ट रूप से मेनू स्वयं होता है, तो यह अपेक्षित रूप से प्रत्येक मेनू आइटम पर दाईं ओर रेडियो बटन प्रदर्शित करता है, लेकिन मुझे इसे सबमेनू के लिए चाहिए।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); 

इस मामले मैं न Radioboxes नहीं दिख रहा है, और न ही सबमेनू में चेक बॉक्स: तो मैं निम्नलिखित कोड है। तब मैं निम्नलिखित कोड लिखा है:

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

यह हर आइटम में एक चेकबॉक्स है करने के लिए सबमेनू बनाता है, और चेक बॉक्स विशेष रूप से काम करते हैं, लेकिन मैं Radioboxes चाहते हैं, क्योंकि वे विशेष चयन के लिए अधिक सहज लग रहे हो।

तो, यह कैसे पूरा किया जा सकता है?

+0

याद रखिए कि संदर्भ मेनू दूर, fading रहे हैं कार्रवाई पट्टी पर प्रासंगिक कार्रवाई मोड के पक्ष में। – CommonsWare

+2

अभी भी सबमेनू पर लागू होता है जो एक्शनप्रोवाइडर के साथ एक्शन बार में जाता है। – aap

उत्तर

10

मुझे पता चला कि मेन्यू और सबमेनस के समूह अलग-अलग संसाधित होते हैं, जो उपमेनू में गठित समूह है, उपमेनू के माध्यम से संबोधित किया जाना चाहिए, शीर्ष स्तर के मेनू के माध्यम से नहीं। तो समाधान कॉल करने के लिए है:

sub.setGroupCheckable(1, true, true); 

इस कोड काम करता है के रूप में उम्मीद है कि चेक बॉक्स के बजाय सबमेनू शो radiobuttons में आइटम है।

14

चेक करने योग्य व्यवहार को एक्सएमएल में एकल में सेट करें। यहाँ कुछ कोड है:

<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

इसके अलावा, सुनिश्चित करें कि सबिटैम्स में उनके चेक करने योग्य विशेषता सेट नहीं हैं। – Clyde

संबंधित मुद्दे