RadioButton: event methods of RadioButton, dynamic and custom RadioButton

RadioButtons વાપરનારને બરાબર એક વિકલ્પ પસંદ કરવા દે છે, પણ ત્યારે જ જ્યારે એ RadioGroup માં વીંટાયેલાં હોય, જે એક જ પસંદગીનો અમલ કરાવે છે; તમે પસંદ થયેલું જૂથના getCheckedRadioButtonId() થી શોધો છો અને એના setOnCheckedChangeListener થી પ્રતિભાવ આપો છો.

8 min read · 9 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

બરાબર એક વર્ષ

FestConnect નો student બરાબર એક જ વર્ષમાં હોય છે: પહેલું, બીજું, કે ત્રીજું, ક્યારેય બે નહીં. CheckBoxes એને ખોટી રીતે અનેક પર નિશાન કરવા દેત. તમને એવું નિયંત્રણ જોઈએ જ્યાં એક વિકલ્પ પસંદ કરવાથી બાકીના છૂટી જાય.

એ છે RadioButton, પણ એક વળાંક સાથે: એકલો RadioButton એક જ પસંદગીનો અમલ કરાવતો નથી. જાદુ એમને RadioGroup માં વીંટવાથી આવે છે. જૂથ જ બટનોને પરસ્પર બાકાત બનાવે છે, અને અહીં એ સૌથી વધુ પુછાતી હકીકત છે.

Theory

જૂની ગાડીના radio નાં બટન

આ widget નું નામ જૂની ગાડીના radios પરથી પડ્યું છે: ભૌતિક બટનોની હાર જ્યાં એક દબાવવાથી બીજાં બહાર નીકળી જતાં, એટલે એક જ station પસંદ રહેતું. હાર (RadioGroup) જ એમને બાકાત બનાવતી; એકલું બટન એ કરી શકતું નહીં. Android નાં RadioButtons એ જ રીતે કામ કરે છે: એમને RadioGroup માં મૂકો અને એક પસંદ કરવાથી બીજાં છૂટી જાય છે.

Theory

જૂથ જ એને એક-પસંદગીવાળું બનાવે છે

  • RadioButton ને `RadioGroup` માં વીંટો; એ જ 'ફક્ત એક પસંદ' નો અમલ કરાવે છે.
  • પસંદગી શોધો: group.getCheckedRadioButtonId() પસંદ થયેલા બટનનું id પાછું આપે છે, કે કોઈ ન હોય તો -1.
  • પછી findViewById(thatId) બટન લાવે છે; એનું લખાણ કે isChecked() વાંચો.
  • પ્રતિભાવ આપો: group.setOnCheckedChangeListener((grp, checkedId) -> { ... }).

RadioButtons ને Java માં ગતિશીલ રીતે બનાવીને જૂથમાં ઉમેરી પણ શકાય; પોતાનાં બનાવેલાં નિશાનીને ફરી શણગારે છે.

Practical

FestConnect: તમારું વર્ષ પસંદ કરો

// XML: <RadioGroup id=yearGroup> with 3 RadioButtons
//   First (id=y1), Second (id=y2), Third (id=y3)
RadioGroup yearGroup = findViewById(R.id.yearGroup);

register.setOnClickListener(v -> {
    int id = yearGroup.getCheckedRadioButtonId();
    if (id == -1) {
        Toast.makeText(this, "Please pick a year", Toast.LENGTH_SHORT).show();
        return;
    }
    RadioButton chosen = findViewById(id);
    Toast.makeText(this, "Year: " + chosen.getText(), Toast.LENGTH_SHORT).show();
});

// picking 'Second' automatically un-picks 'First' (the group enforces it)

Think first

-1 નો શું અર્થ છે?

getCheckedRadioButtonId() એક પરિસ્થિતિમાં -1 પાછું આપે છે. ક્યારે, અને એ પરિણામ પર findViewById બોલાવતાં પહેલાં એની ચકાસણી કેમ મહત્ત્વની છે?

Show the answer

એ જ્યારે જૂથમાંનું એકેય RadioButton પસંદ ન થયું હોય ત્યારે -1 પાછું આપે છે (વાપરનારે હજી વર્ષ પસંદ કર્યું નથી). આ મહત્ત્વનું છે કારણ કે findViewById(-1) એ null પાછું આપે છે, અને null પર .getText() બોલાવતાં app તૂટે છે. એટલે id પર ભરોસો કરતાં પહેલાં તમારે if (id == -1) તપાસીને વાપરનારને પસંદ કરવાનું કહેવું પડે. એ જરૂરી પસંદગી ખરેખર થઈ છે કે નહીં એ ચકાસવાની RadioGroup વાળી આવૃત્તિ છે.

Quiz

ત્રણ RadioButtons વાપરનારને એકને બદલે ત્રણેય પર એકસાથે નિશાન કરવા દે છે. સૌથી સંભવિત કારણ શું છે?

  1. એ એક જ RadioGroup માં વીંટાયેલાં નથી
  2. એમની પાસે isChecked() ની પદ્ધતિ ખૂટે છે
  3. RadioButtons ને onCreate માં setChecked(true) જોઈએ
  4. RadioButtons ક્યારેય પરસ્પર બાકાત હોઈ શકે નહીં
Show the answer

એ એક જ RadioGroup માં વીંટાયેલાં નથી

પરસ્પર બાકાત હોવું એ RadioGroup માંથી આવે છે; બટનોને એક જૂથમાં વીંટ્યા વગર એ સ્વતંત્ર checkboxes જેવાં વર્તે છે અને બધાં પસંદ થઈ શકે છે (A). isChecked() એ વાંચવાની પદ્ધતિ છે, કારણ નહીં (B). onCreate માં setChecked બોલાવવાથી ફક્ત એક પહેલેથી પસંદ થાત, બાકાત થવાનો અમલ નહીં (C). જૂથબદ્ધ હોય ત્યારે RadioButtons જ પરસ્પર બાકાત widget છે (D ખોટું છે). ઉકેલ: એ બધાંને એક જ RadioGroup ની અંદર મૂકો.

Watch out

RadioButton ના ફાંદા

1. RadioGroup વગરનાં RadioButtons: એ પરસ્પર બાકાત હોવાનું ગુમાવે છે અને checkboxes જેવાં વર્તે છે. હંમેશા એમને જૂથબદ્ધ કરો.

2. -1 ને ન સંભાળવું: કશું પસંદ ન થયું હોય ત્યારે getCheckedRadioButtonId() એ -1 છે; findViewById(-1) એ null છે. વાપરતાં પહેલાં તપાસો.

3. એક જ પસંદગીને બે જૂથમાં વહેંચવી: જુદાં RadioGroups માંનાં બટન એકબીજા સાથે બાકાત નથી. એક તાર્કિક પસંદગીને એક જ જૂથમાં રાખો.

Theory

આગળ: dropdowns અને dialogs

થોડા વિકલ્પો માટે RadioButtons સારાં કામ કરે છે, પણ લાંબી યાદી (કહો કે T-shirt નાં 12 માપ કે 50 colleges) dropdown તરીકે વધુ સારી છે. હવે પછીનો પાઠ Spinner (dropdown થી પસંદ કરનારું) ને AlertDialog (અટકાવતી હા/ના ની પેટી) સાથે જોડે છે જેથી FestConnect માપ પસંદ કરીને submit કરતાં પહેલાં નોંધણીની ખાતરી કરી શકે.

Summary

Key takeaways

  • RadioButtons વાપરનારને બરાબર એક વિકલ્પ પસંદ કરવા દે છે, પણ ત્યારે જ જ્યારે એ RadioGroup માં વીંટાયેલાં હોય (જે બાકાત થવાનો અમલ કરાવે છે).
  • જૂથમાંનું એક બટન પસંદ કરવાથી બીજાં આપોઆપ છૂટી જાય છે.
  • group.getCheckedRadioButtonId() પસંદ થયેલું id પાછું આપે છે, કે કશું પસંદ ન હોય તો -1.
  • findViewById(-1) એ null છે, એટલે પસંદ થયેલું બટન વાંચતાં પહેલાં -1 ની ચકાસણી કરો.
  • અનેકમાંથી એક માટે RadioGroup વાપરો; અનેક સ્વતંત્ર પસંદગી માટે CheckBoxes.
  • Memory hook: જૂની ગાડીના radio નાં બટન, એક અંદર જાય એટલે બીજાં બહાર નીકળે.

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Other Android Widgets (UI)

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

RadioButton: event methods of RadioButton, dynamic and custom RadioButton · Mobile Application Development - 1 (option B) · Gri-Learn