Theory
એવી ગોઠવણ જે ચાલુ કે બંધ યાદ રાખે
FestConnect ને 'Notifications' નું નિયંત્રણ જોઈએ છે: એક વાર દબાવો એટલે યાદ અપાવવાનું ચાલુ, ફરી દબાવો એટલે બંધ, અને લેબલ બદલાઈને કઈ અવસ્થામાં છે એ દેખાડે. સાદું Button અવસ્થા યાદ રાખી શકતું નથી; એ ફક્ત ચાલીને ભૂલી જાય છે.
ToggleButton બરાબર આના માટે બનેલું છે: એ ચાલુ/બંધ ની અવસ્થા રાખે છે, દરેક માટે જુદું લેબલ દેખાડે છે, અને તમારા code ને એ અવસ્થા વાંચવા તથા ગોઠવવા દે છે. એ 'checked' નો વિચાર પણ દાખલ કરે છે જેને CheckBox અને RadioButton ફરી વાપરે છે.
Theory
બત્તીની સ્વિચ, દરવાજાની ઘંટડી નહીં
દરવાજાની ઘંટડી (સાદું Button) તમે દબાવો એ જ ક્ષણે કંઈક કરે છે, પછી ભૂલી જાય છે. બત્તીની સ્વિચ (ToggleButton) તમે જ્યાં છોડી હોય ત્યાં જ રહે છે: ઉપર એટલે ચાલુ, નીચે એટલે બંધ, અને એની સ્થિતિ એક નજરમાં દેખાય છે. સ્વિચ દબાવ્યાની વચ્ચે અવસ્થા યાદ રાખે છે. 'હું કઈ અવસ્થામાં છું' ની એ યાદ જ આખો ભેદ છે.
Theory
લેબલ, અવસ્થા, અને પ્રતિભાવ
- લેબલ:
android:textOn(મૂળભૂત 'ON') અનેandroid:textOff(મૂળભૂત 'OFF') દરેક અવસ્થાનું લખાણ ગોઠવે છે. - અવસ્થા વાંચો:
toggle.isChecked()એtrue(ચાલુ) કેfalse(બંધ) પાછું આપે છે. - અવસ્થા ગોઠવો:
toggle.setChecked(true)એને ચાલુ કરી દે છે. - લેબલ વાંચો:
getTextOn()/getTextOff(). - પ્રતિભાવ આપો:
toggle.setOnCheckedChangeListener((btn, isChecked) -> { ... });એ પલટાય ત્યારે ચાલે છે.
(Switch એ સરકતા દેખાવવાળો એ જ વિચાર છે.)
Practical
FestConnect ના notifications નું toggle
// XML: <ToggleButton android:id="@+id/notify"
// android:textOn="Notifications On"
// android:textOff="Notifications Off" />
ToggleButton notify = findViewById(R.id.notify);
notify.setOnCheckedChangeListener((btn, isChecked) -> {
if (isChecked) {
Toast.makeText(this, "Reminders on", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Reminders off", Toast.LENGTH_SHORT).show();
}
});
// read or force the state anywhere:
boolean on = notify.isChecked();
notify.setChecked(true); // turn it on from codeThink first
isChecked કે setChecked?
તમને (a) અત્યારે notifications ચાલુ છે કે નહીં એ જાણવું છે, અને (b) પડદો load થાય ત્યારે એને મૂળભૂત રીતે ચાલુ કરવું છે. દરેક માટે કઈ પદ્ધતિ છે, અને દરેક શું પાછું આપે છે કે લે છે?
Show the answer
(a) હાલની અવસ્થા જાણવા, isChecked() બોલાવો, જે boolean પાછું આપે છે (true = ચાલુ). (b) Code માંથી એને ચાલુ કરવા, setChecked(true) બોલાવો, જે boolean લે છે અને અવસ્થા ગોઠવે છે (કશું પાછું આપતું નથી). Checkable widgets માટે આ ભાત સાર્વત્રિક છે: isChecked() વાંચે છે, setChecked(...) લખે છે. હવે પછીના એકમમાં તમે CheckBox અને RadioButton પર બરાબર એ જ જોડ વાપરશો.
Quiz
ToggleButton પર android:textOn અને android:textOff શું નિયંત્રિત કરે છે, અને એમનાં મૂળભૂત મૂલ્યો શું છે?
- દરેક અવસ્થામાં દેખાતું લેબલ; મૂળભૂત છે 'ON' અને 'OFF'
- દરેક અવસ્થામાં બટનના રંગ
- Toggle થાય ત્યારે વાગતો અવાજ
- બટન ચાલુ છે કે નિષ્ક્રિય એ
Show the answer
દરેક અવસ્થામાં દેખાતું લેબલ; મૂળભૂત છે 'ON' અને 'OFF'
textOn અને textOff ચાલુ અને બંધ અવસ્થા માટે દેખાતું લખાણનું લેબલ ગોઠવે છે, અને એમનાં મૂળભૂત અનુક્રમે 'ON' અને 'OFF' છે (A). એ રંગ (B) કે અવાજ (C) ગોઠવતાં નથી, અને widget ને ચાલુ/નિષ્ક્રિય કરવા સાથે એમને કશું લેવાદેવા નથી (D). એમને ગોઠવવાથી (દા.ત. 'Notifications On'/'Notifications Off') toggle પોતે જ સમજાય એવું બને છે, જે ગોઠવણના પડદા પર સારું UI છે.
Watch out
ToggleButton ના ફાંદા
1. સાદું Button અવસ્થા યાદ રાખશે એવી અપેક્ષા: એ રાખતું નથી; ચાલુ/બંધ માટે ToggleButton (કે Switch/CheckBox) વાપરો.
2. લેબલને અવસ્થા સાથે ગૂંચવવું: getTextOn() એ લેબલ પાછું આપે છે; isChecked() એ boolean અવસ્થા પાછી આપે છે. અવસ્થા જાણવા લખાણ ન તપાસો.
3. અવસ્થા ખોટી જગ્યાએ વાંચવી: એ પલટાય એ જ ક્ષણે પ્રતિભાવ આપવા setOnCheckedChangeListener વાપરો, onCreate માંનું એક વારનું વાચન નહીં.
Theory
Checked નો નમૂનો આગળ વધે છે
isChecked()/setChecked() અને ચાલુ/બંધ નો વિચાર ફક્ત ToggleButton પૂરતો નથી. Unit 5 ની શરૂઆત CheckBox થી થાય છે, જે એ જ checked ના નમૂનાથી student ને અનેક events પસંદ કરવા દે છે, પછી RadioButton, જે checkables ને એવી રીતે જૂથબદ્ધ કરે છે કે એક જ ચાલુ રહી શકે. પદ્ધતિની મુખ્ય જોડ તમને પહેલેથી આવડે છે; પછીનાં widgets ફક્ત એટલું બદલે છે કે એકસાથે કેટલાં checked થઈ શકે.
Summary
Key takeaways
- ToggleButton બે અવસ્થાવાળું ચાલુ/બંધ મૂલ્ય રાખે છે અને દરેક અવસ્થા દીઠ લેબલ દેખાડે છે.
- android:textOn / android:textOff લેબલ ગોઠવે છે (મૂળભૂત 'ON' / 'OFF').
- isChecked() અવસ્થા વાંચે છે (boolean); setChecked(true/false) એને ગોઠવે છે.
- getTextOn()/getTextOff() લેબલ વાંચે છે; setOnCheckedChangeListener એ પલટાય ત્યારે પ્રતિભાવ આપે છે.
- સાદું Button અવસ્થા યાદ રાખી શકતું નથી; Switch એ સરકતા દેખાવવાળું ToggleButton છે.
- Memory hook: બત્તીની સ્વિચ (જ્યાં હોય ત્યાં રહે), દરવાજાની ઘંટડી નહીં (કરીને ભૂલી જાય).