2011-11-30 12 views
76

मेरे पास RadioGroup के अंदर दो RadioButton एस हैं। मैं उन RadioButton एस पर OnClickListener सेट करना चाहता हूं। RadioButton पर क्लिक किया गया है, मैं EditText के टेक्स्ट को बदलना चाहता हूं। इसे कैसे प्राप्त किया जा सकता है?एंड्रॉइड में रेडियोबटन पर ऑनक्लिक लिस्टनर कैसे सेट करें?

उत्तर

180

मैं लगता है कि एक बेहतर तरीका इस पर RadioGroup उपयोग करने के लिए और सेट श्रोता को बदलने के लिए और अद्यतन है View तदनुसार (आपको 2 या 3 या 4 आदि श्रोताओं को बचाता है)। अपने <RadioButton/> टैग में android:onClick="onRadioButtonClicked":

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup);   
    radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      // checkedId is the RadioButton selected 
     } 
    }); 
+0

मेरे लिए काम नहीं कर रहा था, ग्रहण ने सुझाव दिया कि मैं @ ओवरराइड जोड़ता हूं, और यह तय है। धन्यवाद –

+0

हाँ, मैं रेडियोग्रुप का उपयोग करता हूं, सिवाय इसके कि यह काम नहीं करता है जब तक कि यह एक्सएमएल में प्रत्यक्ष माता-पिता नहीं होता है और मैं इसे सीधे माता-पिता के रूप में नहीं रख सकता क्योंकि यह बेवकूफ रेडियोबुटन को केंद्र में गठबंधन नहीं किया जा सकता है, इसलिए मुझे इसे लाइनरलेआउट में संलग्न करना था ... –

+0

आप रेडियोग्रुप टैग के तहत एक्सएमएल में ** एंड्रॉइड: गुरुत्वाकर्षण = "केंद्र" ** डालकर रेडियोधन को केंद्रित करने का प्रयास कर सकते हैं। @RudolfRein – OuuGiii

35

आशा यह आप में मदद मिलेगी ...

RadioButton rb = (RadioButton) findViewById(R.id.yourFirstRadioButton); 
rb.setOnClickListener(first_radio_listener); 

और

OnClickListener first_radio_listener = new OnClickListener(){ 
public void onClick(View v) { 
    //Your Implementaions... 
} 
}; 
+3

कभी-कभी तीन अलग हैंडलर होने के लिए स्पष्ट है।+1 –

+1

एक आकर्षण की तरह काम किया, अपने अंतिम घुंघराले ब्रैकेट के बाद एक अर्धविराम जोड़ने के लिए मत भूलना क्लिक करें श्रोता – inVINCEable

7

तुम भी एक्सएमएल लेआउट से श्रोता जोड़ सकते हैं।

<RadioButton android:id="@+id/radio_pirates" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/pirates" 
    android:onClick="onRadioButtonClicked"/> 

विवरण के लिए Android developer SDK- Radio Buttons देखें।

20
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() 
    { 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      // checkedId is the RadioButton selected 
      RadioButton rb=(RadioButton)findViewById(checkedId); 
      textViewChoice.setText("You Selected " + rb.getText()); 
      //Toast.makeText(getApplicationContext(), rb.getText(), Toast.LENGTH_SHORT).show(); 
     } 
    }); 
6

शायद ज़रुरत पड़े किसी और स्वीकार किए जाते हैं जवाब के साथ struggeling गया था:

अलग OnCheckedChangeListener-इंटरफेस रहे हैं। मैंने पहली बार यह देखने के लिए जोड़ा कि चेकबॉक्स बदल गया था या नहीं।

import android.widget.CompoundButton.OnCheckedChangeListener; 

बनाम

import android.widget.RadioGroup.OnCheckedChangeListener; 

जब रिकी से स्निपेट जोड़ना मैं त्रुटि थी:

विधि setOnCheckedChangeListener (RadioGroup.OnCheckedChangeListener) प्रकार RadioGroup में तर्क के लिए लागू नहीं है (नया कंपाउंडबटन। ऑन चेक किए गए चेंजलिस्टर() {})

अली से जवाब के साथ तय किया जा सकता है:

new RadioGroup.OnCheckedChangeListener() 
16

सवाल जो रेडियो बटन क्लिक किया जाता है का पता लगा रहा के बारे में था, इस आप कैसे प्राप्त कर सकते हैं जो बटन क्लिक किया

final RadioGroup radio = (RadioGroup) dialog.findViewById(R.id.radioGroup1); 
     radio.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 

       View radioButton = radio.findViewById(checkedId); 
       int index = radio.indexOfChild(radioButton); 

       // Add logic here 

       switch (index) { 
       case 0: // first button 

        Toast.makeText(getApplicationContext(), "Selected button number " + index, 500).show(); 
        break; 
       case 1: // secondbutton 

        Toast.makeText(getApplicationContext(), "Selected button number " + index, 500).show(); 
        break; 
       } 
      } 
     }); 
2

इस के बाद से है प्रश्न जावा के लिए विशिष्ट नहीं है, मैं यह जोड़ना चाहता हूं कि आप इसे में कैसे कर सकते हैं कोटलिन:

radio_group_id.setOnCheckedChangeListener({ radioGroup, optionId -> { 
     when (optionId) { 
      R.id.radio_button_1 -> { 
       // do something when radio button 1 is selected 
      } 
      // add more cases here to handle other buttons in the RadioGroup 
     } 
    } 
}) 

यहां radio_group_id संबंधित रेडियो समूह के android:id असाइन किया गया है। इस तरह इसका उपयोग करने के लिए आपको अपनी गतिविधि की कोटलिन फ़ाइल में kotlinx.android.synthetic.main.your_layout_name.* आयात करना होगा। यह भी ध्यान रखें कि radioGroup लैम्ब्डा पैरामीटर अप्रयुक्त है, तो इसे कोटलिन 1.1 के बाद _ (अंडरस्कोर) के साथ प्रतिस्थापित किया जा सकता है।

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

  • कोई संबंधित समस्या नहीं^_^