ارتباط اکتیویتی با فرگمنت توسط interface

آموزش اندروید ارتباط فرگمنت با اکتیویتی با استفاده از اینترفیس interface android fragment activity tutorial

سطح آموزش:  #متوسط

 

معمولا پیش میاد که داخل یک اکتیویتی از یک یا چند فرگمنت استفاده می‌کنیم. گاهی این فرگمنت‌ها تو در تو هم میشن.

ساده‌ترین و بدترین کاری که میشه کرد استفاده از متغیرهای static هست. متغیرهایی که در همه جای برنامه شناخته شده هستن و همیشه میشه بهشون دسترسی داشت.

این روش دو تا ایراد اصلی داره:

  1. ممکن است مقادیر این متغیرها تغییر کند یا هنوز initialize نشده باشد که باعث اشتباه در محاسبات و یا کرش میشه.
  2. نمیشه برای تغییرات رویداد تعریف کرد. مثلا میخوایم وقتی کاربر روی یک button در فرگمنت کلیک کرد ما داخل اکتیویتی کاری رو انجام بدیم.

راه حل این مسئله استفاده از interfaceـه. اینترفیس رابطی‌ست که ما در فرگمنت تعریف می‌کنیم و در اکتیویتی اون رو پیاده سازی می‌کنیم.

برای مثال من یک اکتیویتی مادر دارم که داره یک فرگمنت رو نمایش میده. قصد دارم هروقت روی buttonـی که داخل فرگمنت هست کلیک شد از داخل اکتیویتی یک پیام نمایش بدم.

گام اول

یک پروژه جدید به اسم InterfaceExample می‌سازیم. کلاس MainActivity و MainFragment رو در اون‌ها ایجاد می‌کنیم که به ترتیب لایه‌های activity_main و fragment_main رو نمایش میدن.

گام دوم

کتابخونه design رو به gradle اضافه می‌کنیم. دلیل این کار اینه که من برای نمایش نام میخوام از snackbar استفاده بکنم.

گام سوم

activity_main.xml و fragment_main.xml رو می‌سازیم.

گام چهارم

کلاس MainFragment رو به شکل زیر کد نویسی می‌کنیم:

توجه کنید که برای interface مون هیچ کدی ننوشتیم. و توی اکتیویتی هست که تعیین می‌کنیم چه اتفاقی قرار هست بیفته. فقط اعلام کردیم که هروقت روی button کلیک شد تابع showName از اینترفیس message اجرا بشه و مقدار ورودی رو هم متن edittext قرار داده‌ایم.

گام پنچم

در کلاس MainActivity باید interfaceمون رو پیاده سازی (implement) کنیم:

ارتباط activity و fragment با استفاده از interface

بعد از اجرای کد مشاهده می‌کنید که اکتیویتی به رویدادی که در داخل فرگمنت ایجاد شده به درستی واکنش نشون میده

ارتباط اکتیویتی Activity و فرگمنت fragmen در اندروید android با استفاده از اینترفیس Interface

3 دیدگاه برای “ارتباط اکتیویتی با فرگمنت توسط interface

    1. اکتیویتی که از فرگمنت ارث برده؟ چنین چیزی توی اندروید نداریم. فکر میکنم سوالت رو خوب نپرسیدی یا من متوجه نشدم، اگه میشه بیشتر توضیح بده.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *