سوال در مورد مدیریت فرگمنت ها
سلام دوستان عزیز
من میخوام مثل نرم افزار بازار وقتی بین تب ها جابه جا میشم فرگمنت ها ست بشن(که خب انجام میشه) ولی خب میخوام در ادامه وقتی به بخش دوم فرگمنتی میرم با تعویض تب اون حالت بمونه و از اول نیاد.
برای مثال در نرم افزار بازار وقتی شما از تب دسته بندی وارد توضیحات نرم افزار میشید ، با عوض کردن تب به جستجو یا ... به اون تب میرید ولی وقتی دوباره برمیگردید به دسته بندی اونجا دوباره داره توضیحات نرم افزار رو نشون میده(یعنی در واقع تا جایی که پیش رفته رو نشون میده) میخواستم بدونم چنین کاری رو چطوری میتونم انجام بدم.
ممنون میشم راهنمایی کنید.
سلام. دقت کنید که شما برای نمایش فرگمنتها و اینکه اونا دوباره ساخته نشند ، نباید اونا رو کامل از پشته رم پاک کنید و دوباره بسازیدشون، برای اینکار فقط کافیه حالت visibility اونها رو تغییر بدید ، برای اینکار میتونید از تابع زیر استفاده کنید:
public void showFragment(Fragment fragment, List<Fragment> mustHideFragments){
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
if(fragment.isAdded()){
fragmentTransaction.show(fragment);
} else{
fragmentTransaction.add(R.id.frmHolder, fragment, fragment.getClass().getName());
}
for(Fragment otherFragment : mustHideFragments){
if(otherFragment.isAdded())
fragmentTransaction.hide(otherFragment);
}
fragmentTransaction.commit();
}
دقت کنید ورودی اول فرگمنتی هست که شما میخوایید نمایش بدید ، و ورودی دوم لیست فرگمنتهایی هست که نباید نمایش داده بشند. اگر مایل به مطالعه بیشتر هستید اینجا رو مطالعه بفرمایید.
فقط با افزودن یک شرط ساده این مشکل حل میشه.بدین صورت ک در اکتیوتی پایه اینگونه میباشد:
private SampleFragment fragmentOne;
case R.id.btnFragmentOne: {
if (fragmentOne == null) {
fragmentOne = SampleFragment.newInstance(" فرگمنت شماره یک ", 0xFFE57373);
}
replaceFragment(this, fragmentOne, R.id.fragmentContainer, false);
}
break;
و در فرگمنت هم در متد onCreateView به این صورت :
private View root;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (root != null) {
return root;
}
root = inflater.inflate(R.layout.fragment_blank, container, false);
return root;
}
دوستان کسی نمونه ای نداره؟سورسی یا تکه کدی چیزی که دقیقا مشابه بازار یا دیوار یا کلی برنامه دیگه که تب دارن، مدیریت فرگمنت داشته باشه؟
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .