سوال در مورد روش صحیح فراخوانی و مخفی کردن فرگمنت
سلام
دوستان عزیز من از این طریق بارها و بارها با کلیک روی یک دکمه یک فرگمنت رو فراخوانی میکنم آیا این کار باعت ایجاد چندین فرگمنت مشابه میشه یا فقط همون فرگمنت بازسازی میشه و نمایش داده میشه ؟
می خوام فرگمنت با کلیک اول فقط برای یکبار ساخته بشه و برای دفعه های بعد فقط resume بشه روش بهتری برای این کار هست ؟
Fragment frag2=new FragmentSearch();
FragmentManager fragmentManager= getFragmentManager();
FragmentTransaction fragmentTransaction= fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.target_container,frag2);
fragmentTransaction.commit();
در کلاسی که دکمه و فرگمنت قرار می گیرند متدهای زیر رو اضافه کنید...یک object به صورت فیلد در کلاستون تعریف کنید و هربار با کلیک روی دکمه از متد replaceFragment استفاده کنید و زمانیکه میخواهید محتواهای دیگری (فرگمنت های دیگر) رو جایگزین فرگمنت درحال نمایش کنید مجددا از این متد استفاده کنید ....چون میخواهید فرگمنت جدیدی ظاهر نشه و همون قبلی ادامه پیدا کنه ، نباید در رخداد کلیک دکمه ، فرگمنت رو 'new' کنید و همونطور که گفتم باید به صورت فیلد تعریف بشه...
void replaceFragment(Fragment fragment) {
if (fragment != null) {
FragmentTransaction ft = fm.beginTransaction();
ft.replace(fragment);
ft.addToBackStack(null);
//ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
}}
ادیت : fm در واقع اشاره کننده به شی از کلاس FragmentManager هست و به این صورت تعریف میشه:
FragmentManager fm = getFragmentManager();//در اکتیویتی معمولی
یا
FragmentManager fm = getSupportFragmentManager();//در اکتیویتی های compat
یا
FragmentManager fm = getChildFragmentManager();//در فرگمنت
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .