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

فرگمنت در اندروید و ایجاد فرگمنت در مکان های مختلف

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

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

ببیند ما برای اجرا یک فرگمت نیاز داریم از کلاس FragmentTransaction یک نمونه بسازیم و ازش استفاده کینم برای لود یک کلاس فرگمت در یه ویو فرگمنت .حالا این کلاس چیکار میکنه و از کجا یک نمونه ازش  بسازیم بزارید براتون بگم .

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

خوب از کجا یک نمونه بسازیم ازش باید بگم کلاس FragmentTransaction  چون یک ابسترکه و نمیشه مستقیم ازش نمونه ساخت باید از کلاس FragmentManager استفاده کرد و با کمک تابع getSupportFragmentManager  یا getFragmentManager و اجرای  تابع  ابسترک beginTransaction   میشه  یک نمونه ازش ساخت به صورت زیر 

 

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

 

 

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

 

بد از ساخت یک نمونه از کلاس FragmentTransaction  و لود یک فرگمنت برای اولین باز به صورت زیر عمل میکینم  

transaction .add(R.id.container_layout, fragment).commit();

 

شاید سوال کنید اون تابع commit چیه باید بگم .چیکار داری .فقط باید انو اخر دستورات کلاس FragmentTransaction  بزاری تا کار کنه .همین بدونی کافیه .(نظر شخصی من اینه که کنترل نگه داری و روی این دستور کلیک کنی تا توضیح خود سازندشو بخونی ) و باز شاید بگید این چیه R.id.container_layout  باز باید بگم ای دی  اون ویو  که قزار فرگمنت توش لود  بشه اگر کنترل بگیرید p بزنید میفهمید ازتون چی میخواد تابع ها و اون fragment   هم یه نمونه از کلاس  فرگمنت مونه 

 

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

transaction .replace(R.id.container_layout, fragment).commit();

 

برای حذف یک فرگمت اجرا شده  باید به صورت زیر عمل کرد

 

transaction .remove(R.id.container_layout, fragment).commit();

 

 

 


اجرای یک فرگمت از یک اکتیوتی

CustomFragment fragment =new CustomFragment;



FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();



transaction.replace(R.id.container_layout, fragment).commit();

 

اجرای یک فرگمت از یک فرگمت  

 

   Fragment fragment= new YourFragment();

FragmentTransaction transaction = getFragmentManager().beginTransaction();

transaction.replace(R.id.fragment_container, fragment); // fragmen container id in first parameter is the  container(Main layout id) of Activity

transaction.addToBackStack(null);

transaction.commit(

);

 

 

 

اجرای یک فرگمنت از یک ریسایکلر ویو 

 

        AppCompatActivity activity = (AppCompatActivity) v.getContext();

                       FourthFragment newFragment = new FourthFragment();

                       activity.getSupportFragmentManager()

                                      .beginTransaction()

                                      .replace(R.id.frameLayout, newFragment)

                                      .addToBackStack(null).commit();

 

 

برچسب ها:
پست قبلی
پست بعدی

درباره یونس علی آبادی

یونس علی آبادی . برنامه نویس اندروید و دیگر هیچ 09033846222

دیدگاهتان را ثبت کنید

آدرس ایمیل شما منتشر نمی شود.علامت دارها لازمند. *

*

رفتن به بالا