Theory
એ tap જેણે દેખાય એવું કશું ન કર્યું
ગયા પાઠમાં, Register દબાવવાથી નામ વંચાયું પણ વાપરનારને કશું દેખાયું નહીં. એને ખબર જ ન પડે કે એ કામ થયું. તમને ઝડપી 'Welcome, Aditi' ચમકીને ઓસરી જાય એ જોઈએ છે.
Android માં સૌથી સાદો પ્રતિભાવ છે Toast: નાનો ભૂખરો સંદેશો જે તળિયા પાસે દેખાય છે, એક બે સેકન્ડ રહે છે, અને જાતે અદૃશ્ય થાય છે, કોઈ બટન નહીં, કોઈ ખલેલ નહીં. એ લખવાની બે લીટી છે, અને એમાંની એક લીટી એ છે જે બધા ભૂલી જાય છે.
Theory
Toaster માંથી નીકળતી બ્રેડ
નામ શબ્દશઃ છે: toaster માંથી ઊછળતી toast ની જેમ, સંદેશો ઊપસી આવે છે, થોડી વાર બેસે છે, અને જતો રહે છે, તમે એને બંધ કરતા નથી, એ જાતે નીકળી જાય છે. એ ક્ષણભંગુરતા જ મુદ્દો છે: Toast એ ઝડપી 'થઈ ગયું!' કે 'સંઘરાયું' માટે છે, એવી કોઈ વસ્તુ માટે નહીં જે વાપરનારે ધ્યાનથી વાંચવી કે એના પર પગલું લેવું પડે. એના માટે તમને dialog જોઈએ, જે પછી આવે છે.
Theory
makeText, પછી show
બે પગલાં:
- એને બનાવો:
Toast.makeText(context, message, duration). context: સામાન્ય રીતે Activity, એટલે કેthis(કે listener ની અંદરMainActivity.this).message: લખાણ (String).duration:Toast.LENGTH_SHORT(આશરે 2 સેકન્ડ) કેToast.LENGTH_LONG(આશરે 3.5 સેકન્ડ).- એને દેખાડો: `.show()` જોડો.
.show() છોડી દો અને toast બને છે પણ ક્યારેય દેખાતું નથી, જે Toast ની સૌથી સામાન્ય ભૂલ છે.
Practical
FestConnect tap ની ખાતરી આપે છે
register.setOnClickListener(v -> {
String typed = name.getText().toString();
// build AND show (the .show() is essential)
Toast.makeText(
MainActivity.this,
"Welcome, " + typed,
Toast.LENGTH_SHORT
).show();
});
// Without .show(), makeText builds a Toast that never appears.
// Toast.LENGTH_LONG would keep it on screen a bit longer.Think first
કશું દેખાયું નહીં. શા માટે?
એક student onClick માં Toast.makeText(this, "Hi", Toast.LENGTH_SHORT); લખે છે અને કોઈ સંદેશો ક્યારેય દેખાતો નથી, અને કોઈ ભૂલ પણ નહીં. કઈ એક વસ્તુ ખૂટે છે?
Show the answer
`.show()` નું call. Toast.makeText(...) ફક્ત Toast નો object બનાવે છે; એ એને દેખાડતું નથી. .show() જોડ્યા વગર toast બનીને તરત જ ચૂપચાપ ફેંકાઈ જાય છે, અને એટલે જ કોઈ ભૂલ નથી અને કોઈ સંદેશો પણ નથી. ઉકેલ છે Toast.makeText(this, "Hi", Toast.LENGTH_SHORT).show();. એ Toast નો નંબર એકનો bug છે, એટલે show() ને પરાવર્તિત ટેવ બનાવો.
Quiz
Toast વિશે કયું વિધાન સાચું છે?
- એ ટૂંકો સંદેશો દેખાડે છે જે જાતે ઓસરી જાય છે; એને દેખાડવા તમારે show() બોલાવવું જ પડે
- વાપરનાર બંધ કરવા બટન દબાવે ત્યાં સુધી એ પડદા પર રહે છે
- એ status ની પટ્ટીમાં કાયમી નિશાન તરીકે દેખાય છે
- એ બંધ ન થાય ત્યાં સુધી app ને અટકાવે છે
Show the answer
એ ટૂંકો સંદેશો દેખાડે છે જે જાતે ઓસરી જાય છે; એને દેખાડવા તમારે show() બોલાવવું જ પડે
Toast એ ટૂંકો, પ્રતિભાવ ન લેતો સંદેશો દેખાડે છે જે જાતે ઓસરી જાય છે, અને એ ત્યારે જ દેખાય છે જ્યારે તમે makeText પછી show() બોલાવો (A). એને બંધ કરવાનું બટન નથી અને એ વાપરનારની રાહ જોતું નથી (એ AlertDialog છે) (B). એ status ની પટ્ટીનું કાયમી notification નથી (એ NotificationManager દ્વારા આવતું Notification છે) (C), અને એ app ને અટકાવતું નથી (D). ક્ષણભંગુર, ન અટકાવતું, show() જરૂરી: એ જ Toast છે.
Watch out
Toast ના ફાંદા
1. .show() ભૂલી જવું: makeText બનાવે છે, show() દેખાડે છે. show() નહીં, તો toast નહીં, અને શા માટે એનો ઇશારો આપતી ભૂલ પણ નહીં.
2. Toast ને Notification સાથે ગૂંચવવું: Toast એ ક્ષણભંગુર પ્રતિભાવ છે; status ની પટ્ટીનું Notification (NotificationManager દ્વારા) કાયમી અને પ્રતિભાવ લેતું છે. જુદા classes, જુદા ઉપયોગ.
3. મહત્ત્વની ભૂલો માટે toasts નો અતિરેક: toast ચૂકી શકાય છે (એ ઓસરી જાય છે). વાપરનારે સ્વીકારવી પડે એવી વસ્તુ માટે એને બદલે AlertDialog વાપરો.
Theory
આગળ: બે અવસ્થાવાળું બટન
FestConnect હવે પ્રતિભાવ આપે છે. પછીનું widget છે ToggleButton: બે અવસ્થાવાળું બટન, ચાલુ અને બંધ, textOn/textOff નાં લેબલ સાથે અને એની અવસ્થા વાંચવા તથા ગોઠવવાની પદ્ધતિઓ સાથે, જે 'Notifications: On/Off' ની ગોઠવણ માટે કામનું છે. એ widget ની અવસ્થા વાંચવાનું દાખલ કરે છે, જેના પર Unit 5 નાં CheckBox અને RadioButton બંધાય છે.
Summary
Key takeaways
- Toast એ ટૂંકો, પ્રતિભાવ ન લેતો સંદેશો છે જે ઊપસી આવીને જાતે ઓસરી જાય છે.
- Toast.makeText(context, message, duration) થી બનાવો; context સામાન્ય રીતે Activity (this) હોય છે.
- એને દેખાડવા તમારે .show() જોડવું જ પડે (એ ભૂલી જવું એ Toast નો સૌથી મોટો bug છે).
- સમય છે Toast.LENGTH_SHORT (આશરે 2 સેકન્ડ) કે Toast.LENGTH_LONG (આશરે 3.5 સેકન્ડ).
- Toast એ status ની પટ્ટીનું કાયમી Notification નથી અને અટકાવતું AlertDialog પણ નથી.
- Memory hook: toaster માંથી નીકળતી toast ની જેમ, એ ઊપસે છે અને જાતે જતું રહે છે.