مدیریت بک استک در اپ بلاگ
يكشنبه, ۲۵ آبان ۱۳۹۹، ۰۸:۲۶ ب.ظ
مشکلی که توی اپ بلاگ داشتم این بود که اگر کاربر بیشتر از یک بار روی فرگمنت میزد، همه دفعات در استک ثبت میشد و اگر بک رو میزدیم به همون تعداد پاپ میشد که خب زیاد جالب نیست!
برای حل این مشکل قبل از قرار گرفتن فرگمنت، بررسی میکنیم آیا فرگمنت فعلی همون فرگمنت ورودی هست یا نه. اگر بود توی استک ادش نمیکنیم. کدش:
public void changeFragment(Fragment fragment, String toolbarTitle, boolean fabVisibility) {
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if (currentFragment != null) {
if (fragment.getClass().equals(currentFragment.getClass())) {
return;
}
}
/*
fragment one does not put in back stack
*/
if (fragment instanceof HomeFragment) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, fragment)
.commit();
} else {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, fragment)
.addToBackStack(null)
.commit();
}
getSupportActionBar().setTitle(toolbarTitle);
fab_add_post.setVisibility((fabVisibility) ? View.VISIBLE : View.INVISIBLE);
}
۹۹/۰۸/۲۵