मेरे पास RadioGroup
के अंदर दो RadioButton
एस हैं। मैं उन RadioButton
एस पर OnClickListener
सेट करना चाहता हूं। RadioButton
पर क्लिक किया गया है, मैं EditText
के टेक्स्ट को बदलना चाहता हूं। इसे कैसे प्राप्त किया जा सकता है?एंड्रॉइड में रेडियोबटन पर ऑनक्लिक लिस्टनर कैसे सेट करें?
उत्तर
मैं लगता है कि एक बेहतर तरीका इस पर 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
}
});
आशा यह आप में मदद मिलेगी ...
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
तुम भी एक्सएमएल लेआउट से श्रोता जोड़ सकते हैं।
<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 देखें।
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();
}
});
शायद ज़रुरत पड़े किसी और स्वीकार किए जाते हैं जवाब के साथ struggeling गया था:
अलग OnCheckedChangeListener-इंटरफेस रहे हैं। मैंने पहली बार यह देखने के लिए जोड़ा कि चेकबॉक्स बदल गया था या नहीं।
import android.widget.CompoundButton.OnCheckedChangeListener;
बनाम
import android.widget.RadioGroup.OnCheckedChangeListener;
जब रिकी से स्निपेट जोड़ना मैं त्रुटि थी:
विधि setOnCheckedChangeListener (RadioGroup.OnCheckedChangeListener) प्रकार RadioGroup में तर्क के लिए लागू नहीं है (नया कंपाउंडबटन। ऑन चेक किए गए चेंजलिस्टर() {})
अली से जवाब के साथ तय किया जा सकता है:
new RadioGroup.OnCheckedChangeListener()
सवाल जो रेडियो बटन क्लिक किया जाता है का पता लगा रहा के बारे में था, इस आप कैसे प्राप्त कर सकते हैं जो बटन क्लिक किया
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;
}
}
});
इस के बाद से है प्रश्न जावा के लिए विशिष्ट नहीं है, मैं यह जोड़ना चाहता हूं कि आप इसे में कैसे कर सकते हैं कोटलिन:
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 के बाद _
(अंडरस्कोर) के साथ प्रतिस्थापित किया जा सकता है।
मेरे लिए काम नहीं कर रहा था, ग्रहण ने सुझाव दिया कि मैं @ ओवरराइड जोड़ता हूं, और यह तय है। धन्यवाद –
हाँ, मैं रेडियोग्रुप का उपयोग करता हूं, सिवाय इसके कि यह काम नहीं करता है जब तक कि यह एक्सएमएल में प्रत्यक्ष माता-पिता नहीं होता है और मैं इसे सीधे माता-पिता के रूप में नहीं रख सकता क्योंकि यह बेवकूफ रेडियोबुटन को केंद्र में गठबंधन नहीं किया जा सकता है, इसलिए मुझे इसे लाइनरलेआउट में संलग्न करना था ... –
आप रेडियोग्रुप टैग के तहत एक्सएमएल में ** एंड्रॉइड: गुरुत्वाकर्षण = "केंद्र" ** डालकर रेडियोधन को केंद्रित करने का प्रयास कर सकते हैं। @RudolfRein – OuuGiii