رسیدگی و تنظیم رویدادها به کمک کدهای جاوا

در این درس از دوره آموزشی توسعه اپلیکیشنهای اندروید، به بررسی تخصصی نحوه مدیریت رویدادهای View با استفاده از کدنویسی در زبان Java پرداخته میشود. ابتدا مفاهیم اساسی رویدادهای رابط کاربری در اندروید و نقش آنها در تعاملات کاربر معرفی میشود. سپس انواع رویدادها از جمله OnClickListener
برای کلیک، OnTouchListener
برای لمس و دیگر لیسنرهای پرکاربرد توضیح داده میشوند. با استفاده از مثالهای عملی و گامبهگام، نحوه تعریف لیسنرها برای ویوهای مختلف مانند دکمهها و TextViewها و همچنین بهینهسازی مدیریت این رویدادها برای ایجاد تجربه کاربری روان آموزش داده میشود. این درس بهصورت تخصصی به توسعهدهندگان اندروید کمک میکند تا با درک عمیقتر از مدیریت رویدادها، اپلیکیشنهایی حرفهایتر و کاربرپسندتر طراحی کنند.
در ویدیو آموزشی قبلی، نشانتان دادم که چطور یک event handler یا تنظیم کننده رویداد رو در فایل لایوت ثبت کنید و اینکه چطوری متد مربوط به آنرا در کلاس جاوا ایجاد کنید و با اینکار رویداد ثبت شده رو در کلاسهای جاوا فراخونی کنید، تا وقتی اون رویداد اتفاق افتاد اون متد اجرا بشود. ولی اینجا میخواهم بگویم که میتوانید همه اون کارها رو فقط با نوشتن دستی کدهایتان توی کلاس جاوا هم انجام بدهید.
الان در این پروژه با نام Java Events در فایل لایوتم هستم، و میخواهم این آموزش رو از اینجا شروع کنم.
خب؛ اینجا هیچ ویژگی که مربوط به رویداد کلیک بشود ندارم. برای اجرای یک event handler فقط با استفاده از کدهای جاوا و سفارشی کردن اون رویداد، به یک آیدی برای کنترل باتن نیاز داریم.
من میخواهم نام شیء باتن رو با یک آیدی خاصتر و شناخته شده تر برای کد جاوا تغییر بدهم.
خب؛ ولی بجای اینکه بیایم اینجا و فقط بخواهم این باتن رو تغییر نام بدهم میخواهم از refactoring در اندروید استودیو استفاده کنم. خب؛ میدانید که با اینکار میتوانیم یک قابلیت جدید رو به یک کد اضاف کنیم یا اینکه قابلیت قبلی اون رو تغییر بدهیم، بدون اینکه در نهایت ارر بگیریم، یک جورهایی خوانایی کد رو بهبود میدهیم.
پس برای اینکار بعد از کلیک روی آیدی، Shift F6 رو فشار میدهم و در پنجرهای که باز میشود خیلی راحت Button رو به sub mitButton تغییر میدهم و روی گزینه refactor کلیک میکنم.
و اگر رفرنس دیگری همنام با این آیدی در جای دیگری از پروژه وجود داشته باشد، باید درست بعد از اینکه من روی گزینه refactor کلیک کردم بروزرسانی بشود.
حالا به کلاس main activity میروم و شروع به نوشتن کدهای لازم برای این event handler یا تنظیم کننده رویداد در متد on Create میکنم.
اول یک ارجاع برای باتن ایجاد میکنم.
یک نمونه از کلاس باتن از android .widget با نام ساده button ایجاد میکنم.
متد find ViewById رو فراخوانی میکنم و آیدی شیء باتن رو از آیدی های موجود در منابع پیدا میکنم با تایپ R .id.submitButton.
مقدار بازگشتی کلاس باتن رو کست میکنم.
بعد، متدی از شیء باتن با نام set OnClickListener رو صدا میزنم که به یک نمونه از یک رابط با نام on ClickListener نیاز دارد. این on ClickListener برای تعریف عملیات رابط و اجرا متدهای مورد نیاز آن هست و من با استفاده از یک کلاس بی نام با new OnClickListener آنرا انجام میدهم.
حالا وقتی آنرا انتخاب میکنم به View .OnClickListener بسط داده میشود، چون رابط On ClickListener عضوی از کلاس View هست و همانطور که میبینید Android Studio بعدش به صورت خودکار یک override رو به رابطهای متد On Click اضافه میکند. دقیقاً مثل مثال قبلی، متد On Click یک آرگومان میگیرد که از نوع بازگشتی شیء ویو هست و همان شیءای هست که رویداد کلیک روی آن انجام میشود. مانند مثال قبلی، من داده ای که کاربر وارد کرده رو میگیرم، و اون رو درپیام snack bar نمایش میدهم.
این کد رو از متد set OnClickListener، floating action bar ام کپی میکنم.
برمیگردم متد قبلی.
و اون کد رو اینبار، این پایین پاست میکنم و بعد در snackbar .make، که به یک شیء ویو نیاز دارد، بجای عبارت view؛ که به صورت اتوماتیک آرگومان ورودی این متد بود، V رو وارد میکنم.
و یکبار دیگر از کدم اجرا میگیرم. یک مقداری رو تایپ میکنم و Submit رو میزنم و این هم نتیجه. پس توانستید بطور کامل event handler ها رو ایجاد و استفاده کنید.
برای اینکار هم میتوانید از متدی که برای event handler در فایل لایوت ثبت میشود و در کلاس جاوا با فراخونی یک متدی که قابل سفارشی سازی هست استفاده کنید، و یا میتوانید کل event handler رو در جاوا با ساخت یک عملیات بی نام از رابط event handler راه اندازی کنید، و به این روش ها روادید خود را مشاهده کنید.