2011-10-12 12 views
31

मैं एक्सएमएलRadioGroup: कैसे प्रोग्राम के रूप में जांच करने के लिए

<RadioGroup android:id="@+id/option" 
     android:layout_width="match_parent" 
     android:orientation="horizontal" 
     android:checkedButton="@+id/block_scenario_off" 
     android:layout_height="wrap_content"> 
     <RadioButton 
      android:layout_width="0dip" 
      android:layout_weight="1" 
      android:text="@string/option1" 
      android:layout_height="wrap_content" 
      android:id="@+id/option1" 
      android:layout_gravity="center|left" 
      android:onClick="@string/on_click"/> 
     <RadioButton 
      android:layout_width="0dip" 
      android:layout_weight="1" 
      android:text="@string/option2" 
      android:onClick="@string/on_click" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:id="@+id/option2"/> 
     <RadioButton 
      android:layout_width="0dip" 
      android:layout_weight="1" 
      android:text="@string/option3" 
      android:onClick="@string/on_click" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center|right" 
      android:id="@+id/option3" /> 
    </RadioGroup> 

जावा कोड में से एक RadioGroup बनाने के लिए, मैं प्रोग्राम के रूप में निम्नलिखित के रूप में गतिविधि निर्माण (OnCreate()) पर पहले एक जाँच:

mOption = (RadioGroup) findViewById(R.id.option); 
    mOption.check(R.id.option1); 

लेकिन जब गतिविधि दिखायी जाती है, तो कोई रेडियो बटन चेक नहीं किया जाता है। कोई मदद?

+2

यदि आप चाहते थे रेडियो बटन को प्रोग्रामेटिक रूप से जांचें, तो आपको उस उत्तर को स्वीकार नहीं करना चाहिए था, इस तरह हम उन्हें xml फ़ाइल पर चेक करते हैं! – arniotaki

उत्तर

41

अपने लेआउट में आप android:checked="true" से CheckBox जोड़ सकते हैं जिन्हें आप चुनना चाहते हैं।

RadioButton b = (RadioButton) findViewById(R.id.option1); b.setChecked(true);

+0

रेडियो समूह और/या रेडियोबटन स्तर दोनों के लिए उस विकल्प को जोड़ने का प्रयास करें, –

+0

पर काम नहीं करता है, आपको केवल डिफ़ॉल्ट रूप से रेडियोबटन पर यह विकल्प जोड़ना होगा – Blackbelt

+5

हां, यह रेडियोबटन के लिए XML में असाइन की गई चेक विशेषता के साथ काम करता है, लेकिन यह नहीं करता है जावा कोड के साथ काम करें (यानी mOption.check (R.id.option1)); –

26

आप अपने कोड की onCreate विधि में रेडियो बटन घोषित करने और उन्हें इस्तेमाल करने की आवश्यकता हो सकती:

या प्रोग्राम के रूप में, आप setChecked विधि चेक करने योग्य इंटरफ़ेस में निर्धारित उपयोग कर सकते हैं।

RadioButton rb1 = (RadioButton) findViewById(R.id.option1); 
rb1.setChecked(true); 
+0

यह सही उत्तर – Stephen

+0

यह मेरे लिए काम नहीं कर रहा है, न ही mOption.check (R.id.option1); मैंने क्रिएट() और ऑनस्यूम() पर कोशिश की है। गलत क्या है? – Rodrigo

22

इस कोशिश आप अपने रेडियो बटन कुछ चर उदा के मूल्य के आधार की जाँच की जा करना चाहते हैं "GenderStr" तो आप कोड स्निपेट

if(genderStr.equals("Male")) 
     genderRG.check(R.id.maleRB); 
    else 
     genderRG.check(R.id.femaleRB); 
+0

इस कोड स्निपेट को कहां रखा जाएगा? – SilverShotBee

13

ले लो रेडियो समूह निम्नलिखित का उपयोग करें और यदि कोई अनियंत्रित को देखने के लिए बच्चों को देख सकते हैं।

RadioGroup rg = (RadioGroup) view; 
int checked = savedInstanceState.getInt(wrap.getAttributeName()); 

if(checked != -1) { 
    RadioButton btn = (RadioButton) rg.getChildAt(checked); 
    btn.toggle(); 
} 
+0

मुझे लगता है कि चेक होना चाहिए> -1 नहीं! = - 1 – technik

7

अगर आप अपने onAttachedToWindow विधि में mOption.check(R.id.option1); या इस तरह डाल यह काम करेगा:

view.post(new Runnable() 
{ 
    public void run() 
    { 
     // TODO Auto-generated method stub 
     mOption.check(R.id.option1); 
    } 
}); 

कारण हो सकता है जब RadioGroup वास्तव में प्रदान की गई है कि जांच विधि केवल काम करेंगे।

10

इसके अलावा आप getChildAt() विधि का उपयोग कर सकते हैं। इस तरह:

mOption = (RadioGroup) findViewById(R.id.option); 
((RadioButton)mOption.getChildAt(0)).setChecked(true); 
+2

सामान्य रूप से, कम वोट वाला उत्तर सबसे अच्छा –

9

देखें! setChecked() के साथ रेडियोबूटन की जांच रेडियो ग्रुप के अंदर राज्य को नहीं बदल रही है। उदाहरण के लिए रेडियो समूह से यह विधि गलत परिणाम लौटाएगी: getCheckedRadioButtonId()

हमेशा साथ

mOption.check(R.id.option1); 

आपको चेतावनी दी किया गया है RadioGroup की जाँच करें;)

+0

है यह उत्तर उत्तर स्वीकार किया जाना चाहिए! – Devarshi

1

मैं इस कोड टुकड़ा का उपयोग रेडियो समूह के लिए अनुक्रमित के साथ काम करते:

radioGroup.check(radioGroup.getChildAt(index).getId()); 
+0

बेस्ट उत्तर। एक पंक्ति। समझने में आसान। एकल वस्तु की आवश्यकता है। एक विधि में बहुत आसानी से जोड़ा जा सकता है। – seekingStillness

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