فرگمنت اندروید چیست؟ فرگمنت در برنامه نویسی اندروید چه کاربردی دارد؟ انواع فرگمنت در اندروید کدام ها هستند؟ چرخه عمر Android Fragment چگونه است؟ مقایسه Activity و fragment برنامه نویسی اندروید چگونه است؟ در این مقاله اندروید می خواهیم به این سوالات پاسخ دهیم. پس برای آموزش fragment در اندروید این مطلب از مقاله الکامکو را تا آخر بخوانید تا با آن آشنا شوید.

فرگمنت اندروید چیست ؟ (Android Fragment

فرگمنت اندروید یکی از مولفه های اصلی در  برنامه نویسی اندروید هستند که به شما این امکان را می دهند تا با انعطاف بیشتری اپلیکیشن طراحی کنید. فرگمنت‌ ها جز مستقلی نیستند و باید به یک اکتیویتی متصل شوند. فرگمنت در واقع بخشی از یک activity در اندروید است که امکان توسعه و انجام فعالیت بیشتر را برای یک activity فراهم می کند. بصورت فنی تر فرگمنت یک کلاس جاوا در اندروید است. این کلاس متدهای خاص خودش را دارد که به تعدادی از این مدتها چرخه عمر گفته می شود. با استفاده از این متدها می توانید عملکرد Fragment را در مرحله های مختلف زندگی آن، کنترل کنید. فرگمنت در اندروید می تواند به صورت پویا اضافه و حذف شود تا بهترین رابط کاربری را برای دستگاه بوجود آورد.

فرگمنت ها در برنامه نویسی اندروید چرا بوجود آمدند؟

فرگمنت ها در نسخه ۳٫۰ (API Level 11) به اندروید اضافه شدند. هدف طراحی و معرفی این جزء از برنامه های اندرویدی، توانایی ساخت رابط های کاربری منعطف تر در دستگاه هایی با صفحه های بزرگ، مانند تبلت ها بود. چون در صفحه هایی مانند تبلت ها، فضای زیادی وجود دارد و یک اپلیکیشن باید بتواند از این فضای اضافه، نهایت استفاده را داشته باشد. همچنین این اتفاق باید بدون نیاز به اعمال تغییرات پیچیده و اساسی در سلسه مراتب View اندروید رخ می داد.

به همین دلیل اجزایی طراحی و ساخته شدند که وقتی آنها را به اکتیویتی اضافه می کنید، می توانید صفحه را به چندین قسمت تقسیم کنید که هرکدام عملکرد خاص خودشان را دارند. بدون اینکه نیاز داشته باشید عملکرد های پیچیده ای که در Back Stack اکتیویتی رخ می دهد را کنترل و مدیریت کنید. همه این امکانات امروزه با استفاده از Fragment Support Library در دسترس شما قرار دارند.

انواع فرگمنت اندروید

اساسا فرگمنت به سه مرحله زیر تقسیم می شود:

  • فریم تکی fragment : این نوع برای دستگاه های کوچک از جمله موبایل استفاده می شود.
  • لیست fragment : فرگمنت لیست خاصی از نمایه ها را دارد که به عنوان list fragment شناخته می شود.
  • تراکنش fragment : در این نوع می توانیم یک فرگمنت را به فرگمنت دیگر منتقل کنیم.

همچنین بخوانید: زبان برنامه نویسی جاوا چیست و چه کاربردی دارد؟

همچنین بخوانید: Java با JavaScript فرق می کند! 

همچنین بخوانید: انواع نسخه های جاوا، اخرین نسخه زبان جاوا، فهمیدن ورژن جاوا، کدام نسخه جاوا بهتر است؟

مقایسه Activity و fragment برنامه نویسی اندروید

چرا فقط از همان اکتیویتی ها بجای فرگمنت استفاده نکنیم؟ 

همانطور که در مقاله مربوط به اکتیویتی اندروید گفتیم هر اکتیویتی تمام صفحه اپلیکیشن را در برمی گیرد. با استفاده از اکتیویتی ها، دست شما زیاد برای پیاده سازی رابط های کاربری پیچیده و منعطف باز نیست. به همین دلیل به اجزایی نیاز داریم که بتوانند یک صفحه را به چندین قسمت تقسیم بندی کنند. به اجزایی که بتوانند به صورت صفحه های کوچک از وسط و پایین صفحه ظاهر شوند. یا حتی اجزایی که بتوانند کاری کنند چندین صفحه را در یک صفحه نمایش بدهید.

به همین دلیل است که وجود فرگمنت ها در برنامه نویسی اندروید از اهمیت بسیار زیادی برخوردار هستند و ساختن بسیاری از اپلیکیشن هایی که امروز میبینید، بدون استفاده از Fragment ها امکان پذیر نمی باشد.

فرگمنت و اکتیویتی چه شباهت هایی با هم دارند؟ 

  1. هردو دارای یک فایل کلاس و فایل Layout هستند: اکتیویتی و فرگمنت از دو قسمت تشکیل شده اند، یک فایل ظاهری با پسوند xml و یک کلاس جاوا.
  2. هردو دارای متدهای چرخه عمر هستند: اکتیویتی و Fragment دارای متدهای گوناگونی برای مدیریت چرخه عمر خود هستند.
  3. هردو میتوانند یک صفحه از اپلیکیشن باشند: هم اکتیویتی و هم Fragment میتوانند یک صفحه کامل از اپلیکیشن را به خود اختصاص بدهند.
  4. هردو کلاس های اندروید هستند: هردوی آنها دارای فایل های کلاس جاوا هستند که درون آنها هم متد ها و کلاس های دیگری قرار دارد که در زمان اجرا، فراخوانی میشوند.
  5. هردو ساختاری برای انتقال اطلاعات دارند: هردوی این موارد، از یک ساختار برای انتقال اطلاعات و پیام استفاده میکنند. یکی Intent برای اکتیوتی و دیگری Bundle برای فرگمنت.

فرگمنت و اکتیویتی چه تفاوت هایی با هم دارند؟ 

  1. اکتیویتی میزبان فرگمنت است: هر Fragment حتما باید توسط یک اکتیویتی میزبانی شود، و هیچ فرگمنتی نمیتواند بصورت مستقل اجرا شود.
  2. فرگمنت مانند اکتیویتی مستقل نیست: اکتیویتی ها میتوانند تقریبا بدون نیاز و وابستگی به دیگر کامپوننت های اپلیکیشن، اجرا شوند و شروع به کار کنند. اما فرگمنت ها این قابلیت را ندارند.
  3. چندین فرگمنت میتواند در صفحه وجود داشته باشد: Fragment ها میتوانند در کنار هم، در یک صفحه از نرم افزار قرار بگیرند.
  4. برای ارسال اطلاعات به فرگمنت از Bundle استفاده میشود: روند های ارسال پیام در اکتیویتی و فرگمنت با هم تفاوت دارند. در اکتیویتی ها از Intent و برای Fragment ها از Bundle استفاده میشود.
  5. برای شروع کردن فرگمنت از Fragment Manager استفاده میشود: فرگمنت ها با استفاده از Intent ها شروع میشوند اما Fragment ها برای اینکار نیازمند Fragment Manager هستند.

کاربرد ساخت فرگمنت اندروید؟ 

فرگمنت ها امکانات زیادی را برای شما در برنامه نویسی اندروید فراهم می کنند که می توانید در هرکدام از سناریو های زیر از Fragment ها استفاده کنید:

  • باز شدن یک پنجره کوچک روی صفحه: گاهی اوقات شما نیاز دارید که برای دریافت اطلاعات خاصی از کاربر، نیاز به باز شدن یک پنجره کوچکتر روی صفحه داشته باشید.
  • بالا آمدن یک پنجره از پایین صفحه: یکی از کاربرد های فرگمنت ها، باز شدن یک پنجره از پایین صفحه می باشد. از این صفحه ها برای انجام دادن فعالیت های خاصی استفاده میشود.
  • داشتن قسمت های مختلف در یک صفحه: طراحی ماژولار یکی از خاصیت هایی است که Fragment ها به اپلیکیشن شما اضافه می کنند.
  • باز کردن چند صفحه مختلف در یک اکتیویتی: فرگمنت ها می توانند صفحات مختلفی را درون یک اکتیویتی برای شما پیاده سازی کنند.
  • سناریوهایی که در ذهن شما وجود دارد: با استفاده از قابلیت هایی که Fragment ها در اختیار شما قرار میدهند، سناریوهایی که در ذهن خودتان وجود دارد را پیاده سازی کنید.

ساختار فرگمنت در برنامه نویسی اندروید به چه صورت است؟ 

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

  1. فایل ظاهر یا Layout با پسوند xml: هر فرگمنت دارای یک فایل Layout است که در پوشه res در مسیر پروژه قرار میگیرد. این فایل شامل همه المان هایی است که در رابط کاربری، روی صفحه نمایش داده میشود. این فایل با استفاده از ساختار XML نوشته می شود. در این فایل همه المان ها، استایل ها، اندازه ها، فونت ها، جاگذاری ها و بقیه مواردی که در رابط کاربری باید تنظیم شوند، وجود دارند.
  2. فایل کلاس جاوا با پسوند class: این فایل در اصل مسئول همه عملیات ها، اتفاق ها و عملکرد هایی است که در فرگمنت رخ میدهد. درون این فایل کدهایی به زبان جاوا وجود دارد که عملکرد فرگمنت را مشخص میکنند. یعنی بدون این کلاس جاوا، Fragment فقط یک پوسته خالی است که هیچ واکنشی ندارد و هیچ کاری را نمیتواند انجام بدهد. همه متدها، متدهای چرخه عمر، کلاس ها، ارتباط با سرور ها، ذخیره سازی داده و همه و همه در این کلاس انجام میشوند.

آموزش ساخت فرگمنت اندروید: 

برای ساخت فرگمنت اندروید باید دو کار را به طور کلی انجام بدهیم:

  • ابتدا باید تصمیم بگیرید که activity شامل چند فرگمنت باشد،برای نمونه دو فرگمنت را برای مدیریت حالت عمودی و افقی دستگاه در نظر می گیریم.
  • سپس بر اساس تعداد فرگمنت ها کلاس هایی برای گسترش فرگمنت ها ایجاد می شود.
  • هر کلاس فرگمنت دارای متدها و توابع چرخه ی سیکل خود است که می توانید بر اساس نیاز از آن ها استفاده کنید.
  • با توجه به هر فرگمنت تعریف شده باید طرح آن را نیز در فایل XML تعریف کنید.
  • در نهایت فایل activity را مطابق با تعریف فرگمنت ها تغییر دهید.

فرگمنت در اندروید استودیو

برای درست کردن یک فرگمنت در اندروید استودیو روی app راست کلیک کنید و مسیر زیر را طی کنید:

New -> Fragment -> Fragment (blank)

در آخر یک layout از جنس xml و یک Activity جاوایی درست کنید.

برای بررسی جزئیات به دوره آموزش ساخت برنامه های اندروید مراجعه کنید.

چرخه حیات fragment برنامه نویسی اندروید

فرگمنت یکی از کلاس های جاوا است که می توان از آن چندین بار استفاده کرد. این کلاس دارای متدهایی می باشد که به آنها متدهای چرخه عمر یا Life Cycle Method گفته می شود. این متد ها برای مدیریت و کنترل مراحلی است که یک Fragment در مدت زمانی که وجود دارد (زنده است) استفاده میشود.

یک فرگمنت از زمانی که در صفحه اپلیکیشن نشان داده می شود، تا زمانی که از روی صفحه حذف می شود، مراحل مختلفی را طی می کند. این مراحل با توجه به اتفاقاتی که در گوشی موبایل رخ می دهد، کارهایی که دیگر اپلیکیشن ها انجام می دهند و تعاملاتی که کاربر با دستگاه دارد، می توانند تغییر کنند و به مراحل دیگری تبدیل شوند.

یعنی یک فرگمنت دارای مراحل مختلفی در زمان اجرای خود می باشد. برنامه نویس هم با استفاده از متدهای مدیریت چرخه عمر Fragment، می تواند مشخص کند که در هرکدام از این مرحله ها، فرگمنت چه رفتاری از خودش نشان بدهد. به مجموعه این مراحل Life Cycle گفته میشود.

نکته مهمی که باید بدانید، این است که چرخه عمر یک فرگمنت به چرخه عمر اکتیویتی میزبان آن وابسته است. هرچند این متدها در Fragment و اکتیویتی با یکدیگر تفاوت دارند و تعداد آنها هم متفاوت است، اما متدهای Life Cycle فرگمنت به متدهای چرخه عمر اکتیویتی متصل می شوند و با وابستگی به آنها اجرا می شوند.

همانطور که اکتیویتی ها دارای چرخه حیات هستند، Fragment‌ ها هم دارای چرخه حیات مخصوص به خودشان هستند که با چرخه حیات اکتیویتی اشتراکاتی هم دارد. در تصویر زیر چرخه fragment اندروید را مشاهده می کنید: 

آشنایی با متدهای فرگمنت اندروید

چرخه حیات فرگمنت وضعیت های زیر را دارد: 

onAttach() : این متد هنگامی که فرگمنت به اکتیویتی اضافه شده خوانده می شود.

onCreate() : این متد برای مقداردهی در هنگام ساخت فرگمنت فراخوانی می شود.

onCreateView() : این متد زمانی فراخوانده می شود که فرگمنت ایجاد شده و آماده ساخت واسط کاربری (UI) است. در اکتیویتی این وظیفه بر عهده onCreate() بود.

onActivityCreate() : این متد در زمانی فراخوانده می شود که اکتیویتی میزبان فرگمنت اجرا شده است.

onStart() :  این متد زمانی فراخوانده می شود که رابط کاربری فرگمنت آماده نمایش است.

onResume() : در این زمان فرگمنت فعال است.

onStop() : این متد در زمان پایان فعالیت فرگمنت اجرا می شود و اگر لازم است چیزی ذخیره شود در این مرحله باید انجام داد.

onDestroyView() :  این متد زمانی فراخوانده می شود که UI فرگمنت از اکتیویتی حذف می شود.

onDestroy() :  در زمان انتهای حیات فرگمنت این متد اجرا می شود.

onDetach()‌:  زمانی فراخوانده می شود که فرگمنت به طور کامل از اکتیویتی میزبان خود جدا شده است.

مقایسه چرخه عمر اکتیویتی  و فرگمنت در اندروید

فرگمنت ها همیشه توسط اکتیویتی ها میزبانی می شوند یعنی حتما باید یک اکتیویتی وجود داشته باشد و به همین دلیل چرخه حیات اکتیویتی بر روی فرگمنت ها نیز تاثیر گذار است. به عنوان مثال اگر اکتیویتی on Pause شود همه فرگمنت های آن اکتیویتی هم on Pause می شود.

حتما باید از فرگنت ها در برنامه نویسی اندروید استفاده کنیم؟ 

شاید شما به عنوان برنامه نویس اندروید برای ساخت اپلیکیشن اندروید از فرگمنت ها استفاده نمی کنید و میگید ما بدون اون هم کارمون انجام میشه. بله ولی استفاده از فرگمنت ها باعث می شوند برنامه شما تبدیل به یک برنامه اصیل و حرفه ای شود و اگر از فرگمنت در کد نویسی اندروید استفاده کنید مزیت های زیر را برای شما دارند:

  • ماژولار بودن: کدهای پیچیده‌ی هر اکتیویتی بین چند فرگمنت تقسیم می‌شود و کار سازماندهی و مدیریت آن‌ها را ساده‌تر می‌کند.
  • قابل استفاده‌ی مجدد بودن: رفتارها و رابط کاربری‌ای که در یک فرگمنت پیاده‌سازی می‌شوند را می‌توان در چندین اکتیویتی مورد استفاده قرار داد.
  • سازگار بودن: می‌توان بخشی از رابط کاربری را در یک فرگمنت قرار داد و در اندازه‌ها و حالات مختلف صفحه نمایش، قالب صفحه را تغییر داد.

8همچنین بخوانید: استفاده از برنامه ساز اندروید یا برنامه نویسی اندروید؟

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

نتیجه گیری از آموزش fragment اندروید

با استفاده درست از ساختار Fragment در اندروید بسیاری از محدودیت ها در برنامه ها رفع می شود. در این آموزش شما را با فرگمنت در اندروید آشنا کردیم. در صورتیکه تازه برنامه نویسی را شروع کردید و می خواهید حرفه ای کار کنید باید یکسری از آموزش ها را برای ساخت هر اپلیکیشنی بلد باشید تا بتوانید به عنوان یک برنامه نویس اندروید در جایی مشغول شوید یا پروژه بگیرید. توصیه می شود دوره زیر را تهیه کنید. در این دوره آموزش کامل فرگمنت ها (Fragment) در اندروید به شما توضیح داده می شود.

برای یادگیری این مبحث مثال ها و نکته های متعددی را در فایل ویدئویی آورده ایم که با تهیه این درس و مشاهده ویدئو ها به طور کامل به این مبحث مسلط خواهید شد.

چطوری می تونم این دوره آموزش برنامه نویسی اندروید رو بخرم؟ 

این دوره نیاز به پیش نیاز ندارد. تمامی مفاهیم از صفر تا صد یعنی از سطح مبتدی تا پیشرفته به شما آموزش داده می شود.

آموزش اندروید استودیو - آموزش android studio - آموزش برنامه نویسی اندروید الکامکو - ساخت اپلیکیشن اندروید

همه دوره های آموزشی الکامکو | همه دوره های برنامه نویسی جاوا اندروید


مقالات مرتبط با آموزش برنامه نویسی اندروید:

دوره های مرتبط با آموزش های برنامه نویسی اندروید:

  1. دوره آموزش ساخت اپلیکیشن فیلیمو و نماوا و مشابه 
  2. دوره جامع آموزش رابط کاربری در برنامه نویسی اندروید
  3. دوره آموزش ساخت اپلیکیشن فروشگاهی اندروید

نظر و تجربه شما درباره فرگمنت ها در اندروید چیست؟ لطفا تجربیات خودتان را در این زمینه حتما توی کامنت برای ما بنویسید. منتظر نظرات، پیشنهادات و سوالات شما در همین صفحه از سایت آموزش طراحی اپلیکیشن اندروید الکامکو هستیم 🙂

0 دیدگاه
بازخورد درون خطی
مشاهده همه نظرات
فهرست