نوشته شده توسط
hharddy
بستگی به کد هاتون داره شاید هر بار دارید new میکنید فرگمنت هارو. یا شاید دارید از دستور replace استفاده میکنید این کار هربار فرگمنت جدید میسازه بجاش از show,hide استفاده کنید. نکته این که لطفا سوالتون و تاپیک جداگانه بپرسید تا سوال دوستتون منحرف نشه.
سلام مجدد.
ممنون از راهنماییهاتون
خب اگه هر بار new نکنیم به جاش باید چیکار کنیم؟
مثلاً یک صفحه داریم با دو تا دکمه. اولی لیست محصول ها رو نشون میده و دومی میره توی صفحه جستجو. التبه هر دو با فراگمنت است.
حالا برای هر دکمه دستوری مثل زیر داریم:
btnOne = (Button) findViewById(R.id.btn_a);
btnTwo = (Button) findViewById(R.id.btn_b);
btnOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FrgOne frg1 = new FrgOne();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.frg_holder, frg1);
transaction.addToBackStack(null);
ft.commit();
}
});
btnTwo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FrgTwo frg2 = new FrgTwo();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.frg_holder, frg2);
transaction.addToBackStack(null);
ft.commit();
}
});
حتی برای رفتن به history از backstack هم استفاده شده.
ولی وقتی حتی دکمه back رو میزنم تا فرگمنت قبلی رو نشون بده دوباره از اول ایجاد میشه و به ابتدای صفحه میره
توی این کدها به جای new FrgOne باید چی گذاشت تا هنگام بازگشت به فرگمنت اول، فرگمنت دوباره ایجاد نشه بلکه همون محتوای قبلی رو با همون موقعیت قبلی نشون بده