همانند سایر ویوها  برای دسترسی به  یک Switch در اکتیویتی ، ابتدا از متد findeviewById استفاده می کنیم و با فراخوانی متدهای مختلف روی آبجکت برگشت داده شده توسط این متد با المنت موجود در لیوت ارتباط برقرار کرده و وضعیت آن را ارزیابی و یا خواص آن را دستکاری می کنیم .(برای آشنایی با متد findViewById این پست را مشاهده نمایید )

همون طور که میدونید یک Switch به کاربر این امکان رو میده که از بین دو حالت یکی رو انتخاب کنه (مثل کلید برق که یا روشنه و یا خاموش).برای استفاده کاربردی از این ویو کاری که ما می کنیم اینه که یک متد را در اکتیوتی مینویسیم و با دادن نام این متد به خاصیت android:onclick مربوط به Switch ،باعث فراخوانی شدن این متد در هر بار روشن و خاموش شدن Switch می شیم.(ما در این متد مشخص میکنیم که اگه دکمه روشن بود فلان کار را انجام بده و اگه خاموش بود فلان کار )

 

نحوه عملکرد متد چه طوریه ؟
با هر بار کلیک کردن روی دکمه Switch ، متد ما فراخوانی می شه،  با بکارگیری تابع  isChecked روشن یا خاموش بودن دکمه را در هر بارفراخوانی متد بررسی می کنیم . (هر بار که متد نوشته شده فراخوانی میشه ، با استفاده از isChecked ،چک میکنه که آیا Switch روشن شده یا خاموش ، اگر که روشن بود این دستورات را انجام بده  و اگر خاموش بود این دستورات را .آنچه رو گفتیم در یک مثال پیاده سازی می کنیم .

مثال) میخواهیم متدی رو طوری بنویسیم که اگر کاربر دکمه را در حالت روشن قرار داد عبارت کلید روشن شد روی تکست ویوو چاپ شود و اگر آن را در حالت خاموش قرار داد عبارت کلید خاموش شد چاپ شود.(در عکس زیر نمای نهایی از اجرای اپلیکیشن را مشاهده می کنید)

 

 

 

یک پروژه جدید بسازید
نام اپلیکیشن : Switch
نام دامین اپلیکیشن :apk.manoandroid.com
سطح API اپلیکیشن : ۱۵
نوع اکتیوتی : Empty Activity
نام اکتیوتی : پیشفرض (MainActivity)
نام لیوت : پیش فرض (activity_main)

 

طراحی Layout
تمامی کدهای activity_main.xml را پاک و کدهای زیر را جایگزین نمایید .

توضیح کدهای بالا

خطوط ۱۳ تا ۲۰ مربوط به تعریف المنت تکست ویوو می باشند.
خطوط ۲۲ تا ۳۱ مربوط به تعریف المنت سوییچ می باشند.
خط ۲۳ : در این خط عرض سوییچ را مشخص کرده ایم.
خط ۲۴ : در این خط طول سوییچ را مشخص کرده ایم.
خط ۲۵ : در این خط با بکار بردن خاصیت android:text متنی که در کنار سوییچ باید نمایش داده شود را مشخص کرده ایم.
خط ۲۶ : در این خط یک آی دی برای سوییچ مشخص کرده ایم.
خط ۲۷ : در این خط با دادن نام تابع switcher به خاصیت onClick سوییچ تعیین کردهای که با هر بار کلیک روی دکمه چه متدی از داخل اکتیوتی باید فراخوانی شود.
خط ۲۸ : در این خط سایز متن کنار سوییچ را مشخص کرده ایم.

نوشتن متد در اکتیویتی
فایل MainActivity.java را باز کرده و تمامی کدهای زیر را جایگزین کدهای قبلی کنید.

توضیح کدهای بالا

خطوط ۱۷ تا ۳۱ مربوط به تعریف تابع switcher می باشند.
خط ۱۹ : در این خط با بکار بردن متد findViewById به سوییچ موجوددر لیوت اشاره کرده و آن را در آبجکتی با نام switchTest ذخیره کرده ایم.(از الان به با فراخوانی متدهای دلخواه روی این آبجکت تغییرات مورد نظرمون رو از داخل اکتیوتی روی این ویوو اعمال میکنیم.)
خط ۲۰ : در ابین خط با استفاده از متد findViewById به تکست ویوو موجود در لیوت اشاره کرده و آن را در آبجکتی با نام txt1 ذخیره کرده ایم.(از الان به با فراخوانی متدهای دلخواه روی این آبجکت تغییرات مورد نظرمون رو از داخل اکتیوتی روی این ویوو اعمال میکنیم.)
خط ۲۲ : در این خط یک متغیر نوع Boolean با نام  status ایجاد کرده ایم.همان طور که میدانید یک متغیر نوع بولین متغیری است که یا مقدار true و یا مقدار false ر امی پذیرد.در سمت راست انتساب با فراخوانی متد isChecked روی آیجکت switchTest بررسی کرده ایم که در حال حاضر سوییچ در حالت روشن قرار گرفته یا خاموش است.اگر روشن باشد مقدار true برگردانده میشود و اگر خاموش باشد مقدار False که در نهایت یکی از این دو مقدار در متغیر status ذخیره میشود.
خط ۲۳: در این خط با استفاده از دستور شرطی if مقدار درون متغیر status را چک کرده ایم .با نوشتن if(status==true) گفته ایم که اگر مقدار متغیر status برابر true بود (بعبارتی سوییچ روشن بود ) عبارت کلید روشن است را روی تکستویوو چاپ کن .و در غیر این صورت عبارت کلید خاموش است را چاپ ن.

خوب دوستان این آموزش کاربردی هم به پایان رسید.
امیدوارم که بکارتون بیاد و تونسته باشم مطلب رو به خوبی منتقل کرده باشم.
در صورتی که پیشنهادی داشتید میتونید از طریق برخش نظرات با من در میون بگذارید.
موفق باشید.