रेडियोग्राफ में रेडियो बटन को डिफ़ॉल्ट के रूप में कैसे सेट किया जाए?


132

मैं पैदा की है RadioGroupऔर RadioButtonप्रभावी रूप से निम्नलिखित:

RadioGroup radioGroup = new RadioGroup(context);
                    RadioButton radioBtn1 = new RadioButton(context);
                    RadioButton radioBtn2 = new RadioButton(context);
                    RadioButton radioBtn3 = new RadioButton(context);

                    radioBtn1.setText("Less");
                    radioBtn2.setText("Normal");
                    radioBtn3.setText("More");

                    radioBtn2.setChecked(true);

                    radioGroup.addView(radioBtn1);
                    radioGroup.addView(radioBtn2);
                    radioGroup.addView(radioBtn3);

यहां स्टेप radioBtn2.setChecked(true);कारण radioBtn2हमेशा जांचे जाते हैं। इसका मतलब है कि मैं radioBtn2अन्य दो रेडियो बटन ( radioBtn1, radioBtn3) की जांच करके अनचेक नहीं कर सकता । मैं RadioGroupएक समय में केवल एक रेडियो बटन की जांच करना चाहता हूं (अब यह एक बार में दो रेडियोबूटन की जांच कर सकता है)।

इस समस्या का समाधान किस प्रकार से किया जा सकता है?


क्या आपको गतिशील रूप से आवश्यकता है ???
vk हुडा

जवाबों:


217

आपको इस तरह से रेडियोग्राफ में रेडियोबॉटन की जांच करनी चाहिए:

radiogroup.check(IdOfYourButton)

बेशक आपको सबसे पहले अपने रेडियो-बटन पर एक आईडी सेट करनी होगी

संपादित करें: मैं भूल गया, radioButton.getId()साथ ही काम करता है, रमेश

EDIT2:

android:checkedButton="@+id/my_radiobtn"

रेडियोग्राम xml में काम करता है


39
या यदि आप अपना आईडी आईडी नहीं बनाना चाहते हैं RadioButtonऔर आपको पता है कि आप जिस इंडेक्स का उपयोग कर सकते हैं ((RadioButton) RadioGroup.getChildAt (INDEX))। setChecked (true);
अहमद कयाली

17
आपको ऐसा नहीं करना चाहिए। इस प्रश्न में वर्णित "सेट-चेक" समस्या का कारण होगा। बेशक ऐसे तरीके हैं जो आपके बटनों की आईडी के बिना हैं, लेकिन कृपया इसका उपयोग न करें setChecked() एक तरीका होगा radiogroup.check(((RadioButton)radioGroup.getChildAt(INDEX)).getId())या ऐसा कुछ होगा
स्प्रीग

1
अच्छा रेडियो बटन समूह के लिए रेडियो बटन जोड़ने के लिए भूल नहीं करने के लिए पहले group.check (button.getId ()) बुला
टॉम

1
मुझे यह इस तरह से करना था: radioGroup.Check(radioGroup.GetChildAt(0).Id);एक्समरीन के लिए। और थायराइड उपयोगकर्ता
मारियो

112

एक्सएमएल विशेषता के लिए मामले में अपनी android:checkedButtonजो लेता है idकी RadioButtonजांच की जानी।

<RadioGroup
...
...
android:checkedButton="@+id/IdOfTheRadioButtonInsideThatTobeChecked"
... >....</RadioGroup>

50

XML फ़ाइल में android:checkedButtonफ़ील्ड RadioGroupको आपके डिफ़ॉल्ट की आईडी के साथ सेट करें RadioButton:

<RadioGroup
    ....
    android:checkedButton="@+id/button_1">

    <RadioButton
        android:id="@+id/button_1"
        ...../>

    <RadioButton
        android:id="@+id/button_2"
        ...../>

    <RadioButton
        android:id="@+id/button_3"
        ...../>
</RadioGroup>

20
    RadioGroup radioGroup = new RadioGroup(WvActivity.this);
    RadioButton radioBtn1 = new RadioButton(this);
    RadioButton radioBtn2 = new RadioButton(this);
    RadioButton radioBtn3 = new RadioButton(this);

    radioBtn1.setText("Less");
    radioBtn2.setText("Normal");
    radioBtn3.setText("More");


    radioGroup.addView(radioBtn1);
    radioGroup.addView(radioBtn2);
    radioGroup.addView(radioBtn3);

    radioGroup.check(radioBtn2.getId());

6
RadioGroup radioGroup = new RadioGroup(context);
RadioButton radioBtn1 = new RadioButton(context);
RadioButton radioBtn2 = new RadioButton(context);
RadioButton radioBtn3 = new RadioButton(context);

radioBtn1.setText("Less");
radioBtn2.setText("Normal");
radioBtn3.setText("More");

radioGroup.addView(radioBtn1);
radioGroup.addView(radioBtn2);
radioGroup.addView(radioBtn3);
radioBtn2.setChecked(true);

setChecked()सभी रेडियो बटन को रेडियो समूह में जोड़ने के बाद उपयोग करने के लिए महत्वपूर्ण बात है । फिर, radioGroup.check(radioBtn2.getId())neccessary नहीं है
हार्टमुट Pfitzinger

3

मेरे सहकर्मी कोड में समान समस्या थी। ऐसा लगता है कि आपका रेडियो समूह आपके रेडियो बटन के साथ ठीक से सेट नहीं है। यही कारण है कि आप रेडियो बटन का चयन कर सकते हैं। मैंने कई चीजों की कोशिश की, आखिरकार मैंने एक चाल चली जो वास्तव में गलत है, लेकिन ठीक काम करता है।

for ( int i = 0 ; i < myCount ; i++ )
{
    if ( i != k )
    {
        System.out.println ( "i = " + i );
        radio1[i].setChecked(false);
    }
}

यहां मैंने लूप के लिए एक सेट किया है, जो उपलब्ध रेडियो बटन की जांच करता है और नए क्लिक किए गए को छोड़कर हर एक का चयन करता है। कोशिश करो।



0

यह RadioGroup का एक बग है

RadioButton radioBtn2 = new RadioButton(context);

RadioBtn2 बिना viewId, और generateViewId के onChildViewAdded () में है

public void onChildViewAdded(View parent, View child) {
    if (parent == RadioGroup.this && child instanceof RadioButton) {
        int id = child.getId();
        // generates an id if it's missing
        if (id == View.NO_ID) {
            id = View.generateViewId();
            child.setId(id);
        }
        ((RadioButton) child).setOnCheckedChangeWidgetListener(
                mChildOnCheckedChangeListener);
    }

    if (mOnHierarchyChangeListener != null) {
        mOnHierarchyChangeListener.onChildViewAdded(parent, child);
    }
}

इसलिए, पहले RadioGroup.addView (RadioBtn2), फिर RadioBtn2.setChecked (सत्य);

ऐशे ही:

RadioGroup radioGroup = new RadioGroup(context);
RadioButton radioBtn1 = new RadioButton(context);
RadioButton radioBtn2 = new RadioButton(context);
RadioButton radioBtn3 = new RadioButton(context);

radioBtn1.setText("Less");
radioBtn2.setText("Normal");
radioBtn3.setText("More");

radioGroup.addView(radioBtn1);
radioGroup.addView(radioBtn2);
radioGroup.addView(radioBtn3);

radioBtn2.setChecked(true);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.