Android में एक रेडियोबटन पर OnClickListener कैसे सेट करें?


109

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

जवाबों:


234

मुझे लगता है कि एक बेहतर तरीका यह है RadioGroupकि श्रोता को उपयोग और सेट करने के लिए इसे बदलने और अपडेट करने के लिए सेट किया जाए View(आपको 2 या 3 या 4 आदि श्रोताओं को बचाने के लिए)।

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

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

हाँ, मैं रेडियोग्राफ़ का उपयोग करूंगा जब तक कि यह xml में एक सीधा अभिभावक नहीं है और मैं इसे सीधे माता-पिता के रूप में नहीं रख सकता क्योंकि यह बेवकूफ रेडियोबॉटन को केंद्र में संरेखित नहीं किया जा सकता है, इसलिए मुझे इसे रैखिक रेखा में घेरना था ...
Javax0rr

आप RadioGroup टैग के अंतर्गत xml में android: गुरुत्वाकर्षण = "केंद्र" डालकर रेडियोबॉटन को केन्द्रित करने का प्रयास कर सकते हैं । @RudolfRein
OuuGiii

अगर रेडियोबॉटन गतिशील रूप से बनाया गया है, और एक आईडी नहीं है तो हम क्या करते हैं?
अर्जुन इस्सर

46

आशा है कि यह आपकी मदद करेगा...

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...
 }
};

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

पुराना लेकिन भला। स्वीकृत उत्तर दुबला-पतला है, लेकिन उपयोगकर्ता द्वारा पहले से ही चुने गए किसी चीज़ के चयन के मामले को संभालता नहीं है। यह उसे संभालता है। शर्म की बात है कि रेडियोग्राफ श्रोता "सेटेड" को "बदले हुए" की परवाह किए बिना हैंडल नहीं करता है।
जेमीबी

27
 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();
        }
    });

1
groupकी जरूरत है RadioButton rb=(RadioButton)group.findViewById(checkedId);
आर्टिफिशियल स्टुपिडिटी

18

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

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

10

आप XML लेआउट से श्रोता भी जोड़ सकते हैं: android:onClick="onRadioButtonClicked"अपने <RadioButton/>टैग में।

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

देखें Android डेवलपर SDK- रेडियो बटन जानकारी के लिए।


7

बस किसी और के स्वीकृत जवाब से जूझ रहा था:

विभिन्न OnCheckedChangeListener-Interfaces हैं। मैंने यह देखने के लिए पहले एक को जोड़ा कि क्या चेकबॉक्स बदला गया था।

import android.widget.CompoundButton.OnCheckedChangeListener;

बनाम

import android.widget.RadioGroup.OnCheckedChangeListener;

रिकी से स्निपेट को जोड़ते समय मुझसे त्रुटियां हुईं:

प्रकार: RadioGroup प्रकार में SetOnCheckedChangeListener (RadioGroup.OnCheckedChangeListener) तर्क (नए CompoundButton.OnCheckedChangeListener) ({}) के लिए लागू नहीं है

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

new RadioGroup.OnCheckedChangeListener()

5

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

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

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


1
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup);     
    radioGroup.setOnClickListener(v -> {
                        // get selected radio button from radioGroup
                        int selectedId = radioGroup.getCheckedRadioButtonId();
                        // find the radiobutton by returned id
                        radioButton =  findViewById(selectedId);
                        String slectedValue=radioButton.getText()          
        });

कृपया केवल कोड पोस्ट करने के बजाय इस उत्तर के लिए स्पष्टीकरण प्रदान करें।
स्कूबी डू 18

अंतिम पंक्ति होनी चाहिए: 'स्ट्रिंग slectedValue = RadioButton.getText ()। toString ()'
Web.11

0

Kotlin के लिए यहाँ लैम्बडा एक्सप्रेशन जोड़ा गया है और कोड ऑप्टिमाइज़ किया गया है।

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

आशा है कि यह आपकी मदद करेगा। धन्यवाद!

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