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

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

 

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

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

 

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

 

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

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

خطوط  ۱۳ تا ۲۵ مربوط  یه تعریف ویو ToggleButton هستند.
خط ۱۳ : این خط مربوط به تعریف ToggleButton  می باشد.
خط ۱۴ : در این خط عرض ToggleButton را مشخص کرده ایم.
خط ۱۵ : در این خط عرض ToggleButton را مشخص کرده ایم.
خط ۱۷ :در این خط یک آی دی برای ToggleButton  تعیین کرده ایم.(togglebtn1)
خط ۱۸ :مربوط به تعیین مکان ToggleButton  می باشد.
خط ۱۹ :مربوط به تعیین مکان ToggleButton  می باشد.
خط ۲۰:مربوط به تعیین مکان ToggleButton  می باشد.
خط ۲۱:در این خط با استفااده از خاصیت textOn متن مربوط به آن را موقعی که در حالت روشن قرار دارد را مشخص کرده ایم.
خط ۲۲:در این خط با استفااده از خاصیت textOff متن مربوط به آن را موقعی که در حالت روشن قرار دارد را مشخص کرده ایم.
خط ۲۳:در این خط سایز متن نمایشی ToggleButton را مشخص کرده ایم.
خط ۲۴ : در این خط  با استفاده از خاصیت checked ، حالت پیش فرض ToggleButton  موقع اجرای برنامه مشخص کرده ایم .(خاموش = false)
خط ۲۳ :در این خط با دادن نام متد موردنظر به خاصیت Onclick مشخص کرده ایم که هر بر که کاربر روی این دکمه کلیک میکند چه متدی باید فراخوانی شود .(در هر بار روشن یا خاموش شدن دکمه این متد فراخوانی می شود ).

 

 

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

توضیح کدهای بالا
خطوط ۱۷ تا ۳۳ مربوط به تعریف متد mymethod می باشند.
خط ۱۷ : مربوط به اعلان متد mymethod می باشد.
خط ۱۹ : در این خط به وسیله findViewById به ویو toglgleButton با آی دی (txt1 ) اشاره کرده و آن را در یک آبجکت با نام togglebtn1 ذخیره کرده ایم.
خط ۲۰ : خط ۱۹ : در این خط به وسیله findViewById به ویو TextViewبا آی دی (txt1 ) اشاره کرده و آن را در یک آبجکت با نام txt1 ذخیره کرده ایم.
خط ۲۲ : در این با فراخوانی متد isChecked  روی آبجکت ToggleButton بررسی کرده ایم ه آیا ویوو  ToggleButton روی حالت خاموش قرار دارد یا روشن.اگر روشن بود true برگردانده میشود و اگر خاموش بود false برگدانده می شود.مقدار برگشت داده شده را در یک متغیر Boloean به نام Status ذخیره کرده ایم.
خطوط ۲۳ تا ۳۲ : در خط ۲۳ یک شرط را بررسی کرده ایم که آیا مقدار درون متغیر status برابر true است یا false . در ادامه مشخص کردیم که اگر مقدار این متغیر برابر true بود(یعنی کلید در حالت روشن قرار گرفته بود) روی تکست ویو چاپ کن “کلید در وضعیت روشن قرار دارد ” و اگر مقدار این متغیر برابر false است روی  تکست ویوو چاپ کن که ” کلید در وضعیت خاموش قرار دارد ” .

 

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