آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

طبقه بندی موضوعی

بک استک فرگمنت

يكشنبه, ۲۵ آبان ۱۳۹۹، ۱۰:۵۲ ق.ظ

در حالت پیش فرض بک استک فقط برای اکتیویتی وجود داره و فرگمنتها بک استک ندارن. برای استفاده از بک استک فرگمنت باید اون رو توی کد فعال کنیم.

 

نکته مهم: بک استک فرگمنت در واقع استکی از transitionها است و نه فرگمنت ها!

هر یک از عملیات های add، remove و replace در استک ذخیره می شود.

نکته مهم دیگه اینه که برای هر کامیت باید یک transition فراخونی بشه در غیر این صورت اپ کرش میکنه.

کد زیر اضافه کردن یک فرگمنت به استک را نشان می دهد:

 

private void changeFragment(Fragment fragment) {

    FragmentManager fragmentManager = getSupportFragmentManager();

    fragmentManager
            .beginTransaction()
            .replace(R.id.frag_container, fragment)
            .addToBackStack(null)
            .commit();
}

 

حذف transition (فرگمنت) از استک توسط 

 

getSupportFragmentManager().popBackStack();

انجام میگردد. این دستور برعکس replace عمل میکند. یعنی فرگمنت فعلی را پرانده و فرگمنت قبلی را جایگزین میکند.

 

برای اینکه بدونیم هر لحظه چه تعداد transition در استک وجود دارد، از دستور 

fragmentManager.getBackStackEntryCount();

استفاده میکنیم.

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

 

fragmentManager.addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
    @Override
    public void onBackStackChanged() {
        Log.i(TAG, "BackStackEntryCount: " + fragmentManager.getBackStackEntryCount());

    }
});
موافقین ۰ مخالفین ۰ ۹۹/۰۸/۲۵
میم دال

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی