Example usage for android.support.v4.app FragmentManager getBackStackEntryAt

List of usage examples for android.support.v4.app FragmentManager getBackStackEntryAt

Introduction

In this page you can find the example usage for android.support.v4.app FragmentManager getBackStackEntryAt.

Prototype

public abstract BackStackEntry getBackStackEntryAt(int index);

Source Link

Document

Return the BackStackEntry at index index in the back stack; entries start index 0 being the bottom of the stack.

Usage

From source file:bf.io.openshop.ux.MainActivity.java

/**
 * Method clear fragment backStack (back history). On bottom of stack will remain Fragment added by {@link #addInitialFragment()}.
 *//* ww w .  ja v a2 s .  co  m*/
private void clearBackStack() {
    Timber.d("Clearing backStack");
    FragmentManager manager = getSupportFragmentManager();
    if (manager.getBackStackEntryCount() > 0) {
        if (BuildConfig.DEBUG) {
            for (int i = 0; i < manager.getBackStackEntryCount(); i++) {
                Timber.d("BackStack content_%d= id: %d, name: %s", i, manager.getBackStackEntryAt(i).getId(),
                        manager.getBackStackEntryAt(i).getName());
            }
        }
        FragmentManager.BackStackEntry first = manager.getBackStackEntryAt(0);
        manager.popBackStack(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }
    Timber.d("backStack cleared.");
    //        TODO maybe implement own fragment backStack handling to prevent banner fragment recreation during clearing.
    //        http://stackoverflow.com/questions/12529499/problems-with-android-fragment-back-stack
}

From source file:cn.edu.zafu.corepage.base.BaseActivity.java

/**
 * fragment//from  ww w. j  a  v  a2s  .  co m
 * @param pageName page??
 * @return ?Fragment
 */
@Override
public boolean findPage(String pageName) {
    int size = mActivities.size();
    int j = size - 1;
    boolean hasFind = false;
    for (; j >= 0; j--) {
        WeakReference<BaseActivity> ref = mActivities.get(j);
        if (ref != null) {
            BaseActivity item = ref.get();
            if (item == null) {
                Log.d(TAG, "item is null");
                continue;
            }
            FragmentManager manager = item.getSupportFragmentManager();
            int count = manager.getBackStackEntryCount();
            for (int i = count - 1; i >= 0; i--) {
                String name = manager.getBackStackEntryAt(i).getName();
                if (name.equalsIgnoreCase(pageName)) {
                    hasFind = true;
                    break;
                }
            }
            if (hasFind) {
                break;
            }
        }
    }
    return hasFind;
}

From source file:org.wikipedia.gallery.GalleryActivity.java

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_gallery);
    initToolbar();/*  w  ww  . j  av  a  2 s  .  co m*/

    toolbarContainer = findViewById(R.id.gallery_toolbar_container);
    infoContainer = findViewById(R.id.gallery_info_container);
    setBackgroundGradient(infoContainer, Gravity.BOTTOM);

    progressBar = findViewById(R.id.gallery_progressbar);

    descriptionText = findViewById(R.id.gallery_description_text);
    descriptionText.setShadowLayer(2, 1, 1, color(R.color.black54));
    descriptionText.setMovementMethod(linkMovementMethod);

    licenseIcon = findViewById(R.id.gallery_license_icon);
    licenseIcon.setOnClickListener(licenseShortClickListener);
    licenseIcon.setOnLongClickListener(licenseLongClickListener);

    creditText = findViewById(R.id.gallery_credit_text);
    creditText.setShadowLayer(2, 1, 1, color(R.color.black54));

    errorView = findViewById(R.id.view_gallery_error);
    ((ImageView) errorView.findViewById(R.id.view_wiki_error_icon)).setColorFilter(color(R.color.base70));
    ((TextView) errorView.findViewById(R.id.view_wiki_error_text)).setTextColor(color(R.color.base70));
    errorView.setBackClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed();
        }
    });
    errorView.setRetryClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            errorView.setVisibility(View.GONE);
            loadGalleryContent();
        }
    });

    if (getIntent().hasExtra(EXTRA_PAGETITLE)) {
        pageTitle = getIntent().getParcelableExtra(EXTRA_PAGETITLE);
    }
    initialFilename = getIntent().getStringExtra(EXTRA_FILENAME);
    wiki = getIntent().getParcelableExtra(EXTRA_WIKI);

    galleryCache = new HashMap<>();
    galleryAdapter = new GalleryItemAdapter(this);
    galleryPager = findViewById(R.id.gallery_item_pager);
    galleryPager.setAdapter(galleryAdapter);
    pageChangeListener = new GalleryPageChangeListener();
    galleryPager.addOnPageChangeListener(pageChangeListener);

    funnel = new GalleryFunnel(app, wiki, getIntent().getIntExtra(EXTRA_SOURCE, 0));

    if (savedInstanceState == null) {
        if (initialFilename != null) {
            funnel.logGalleryOpen(pageTitle, initialFilename);
        }
    } else {
        controlsShowing = savedInstanceState.getBoolean("controlsShowing");
        initialImageIndex = savedInstanceState.getInt("pagerIndex");
        // if we have a savedInstanceState, then the initial index overrides
        // the initial Title from our intent.
        initialFilename = null;

        FragmentManager fm = getSupportFragmentManager();
        if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            for (int i = 0; i < fm.getBackStackEntryCount(); i++) {
                Fragment fragment = fm.findFragmentById(fm.getBackStackEntryAt(i).getId());
                if (fragment instanceof GalleryItemFragment) {
                    ft.remove(fragment);
                }
            }
            ft.commitAllowingStateLoss();
        }
    }
    toolbarContainer.post(new Runnable() {
        @Override
        public void run() {
            setControlsShowing(controlsShowing);
        }
    });
    loadGalleryContent();
}

From source file:cn.edu.zafu.corepage.base.BaseActivity.java

/**
 * ??//from  www .  jav  a2 s . c om
 * @param fragmentTag fragmenttag
 * @return Fragment??
 */
@Override
public boolean isFragmentTop(String fragmentTag) {
    int size = mActivities.size();
    if (size > 0) {
        WeakReference<BaseActivity> ref = mActivities.get(size - 1);
        BaseActivity item = ref.get();
        if (item != null && item == this) {
            FragmentActivity activity = item;
            FragmentManager manager = activity.getSupportFragmentManager();
            if (manager != null) {
                int count = manager.getBackStackEntryCount();
                if (count >= 1) {
                    FragmentManager.BackStackEntry entry = manager.getBackStackEntryAt(count - 1);
                    if (entry.getName().equalsIgnoreCase(fragmentTag)) {
                        return true;
                    }
                }
            }
        }
    }
    return false;
}

From source file:uk.co.nevarneyok.ux.MainActivity.java

/**
 * Method clear fragment backStack (back history). On bottom of stack will remain Fragment added by {@link #addInitialFragment()}.
 *//*  www  . j  av  a2 s .  co m*/
private void clearBackStack() {
    Timber.d("Clearing backStack");
    FragmentManager manager = getSupportFragmentManager();
    if (manager.getBackStackEntryCount() > 0) {
        if (BuildConfig.DEBUG) {
            for (int i = 0; i < manager.getBackStackEntryCount(); i++) {
                Timber.d("BackStack content_%d= id: %d, name: %s", i, manager.getBackStackEntryAt(i).getId(),
                        manager.getBackStackEntryAt(i).getName());
            }
        }
        FragmentManager.BackStackEntry first = manager.getBackStackEntryAt(0);
        manager.popBackStackImmediate(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }
    Timber.d("backStack cleared.");
    //        TODO maybe implement own fragment backStack handling to prevent banner fragment recreation during clearing.
    //        http://stackoverflow.com/questions/12529499/problems-with-android-fragment-back-stack<
}

From source file:com.koushikdutta.widgets.ListContentFragmentInternal.java

@SuppressLint("InlinedApi")
void setContentNative(final String breadcrumb) {
    android.app.Fragment f = (android.app.Fragment) mCurrentContent;
    Activity fa = getActivity();//from  w  w w .  j  a  v  a 2  s  . co m
    final android.app.FragmentManager fm = fa.getFragmentManager();

    android.app.FragmentTransaction ft = fm.beginTransaction();
    if (isPaged()) {
        if (listener == null) {
            fm.addOnBackStackChangedListener(new android.app.FragmentManager.OnBackStackChangedListener() {
                {
                    listener = this;
                }

                @Override
                public void onBackStackChanged() {
                    android.app.Fragment f = (android.app.Fragment) getFragment();
                    if (f.isDetached() || f.isRemoving()) {
                        fm.removeOnBackStackChangedListener(this);
                        return;
                    }
                    View v = getFragment().getView();
                    if (v == null)
                        return;
                    final View l = v.findViewById(R.id.list_fragment);
                    if (l == null)
                        return;
                    if (fm.getBackStackEntryCount() > 0 && "content"
                            .equals(fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1).getName())) {
                        l.setVisibility(View.GONE);
                    } else {
                        l.setVisibility(View.VISIBLE);
                    }
                }
            });
        }

        fm.popBackStack("content", android.app.FragmentManager.POP_BACK_STACK_INCLUSIVE);
        ft.setBreadCrumbTitle(breadcrumb);
        ft.setBreadCrumbShortTitle(breadcrumb);
        ft.addToBackStack("content");
    }
    ft.replace(getContentId(), f, "content");
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    ft.commit();
}

From source file:com.koushikdutta.widgets.ListContentFragmentInternal.java

public void setContent(FragmentInterfaceWrapper content, boolean clearChoices, String breadcrumb) {
    mCurrentContent = content;/*from w w  w .j ava2s. com*/
    if (getActivity() instanceof FragmentActivity) {
        Fragment f = (Fragment) mCurrentContent;
        FragmentActivity fa = (FragmentActivity) getActivity();
        final FragmentManager fm = fa.getSupportFragmentManager();
        FragmentTransaction ft = fa.getSupportFragmentManager().beginTransaction();
        if (isPaged()) {
            View v = getFragment().getView();
            Assert.assertNotNull(v);
            final View l = v.findViewById(R.id.list_fragment);
            Assert.assertNotNull(l);
            l.setVisibility(View.GONE);
            fm.addOnBackStackChangedListener(new OnBackStackChangedListener() {
                {
                    listener = this;
                }

                @Override
                public void onBackStackChanged() {
                    Fragment f = (Fragment) getFragment();
                    if (f.isDetached() || f.isRemoving()) {
                        fm.removeOnBackStackChangedListener(this);
                        return;
                    }
                    View v = getFragment().getView();
                    if (v == null)
                        return;
                    final View l = v.findViewById(R.id.list_fragment);
                    if (l == null)
                        return;
                    if (fm.getBackStackEntryCount() > 0 && "content"
                            .equals(fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1).getName())) {
                        l.setVisibility(View.GONE);
                    } else {
                        l.setVisibility(View.VISIBLE);
                    }
                }
            });

            fm.popBackStack("content", FragmentManager.POP_BACK_STACK_INCLUSIVE);
            ft.setBreadCrumbTitle(breadcrumb);
            ft.setBreadCrumbShortTitle(breadcrumb);
            ft.addToBackStack("content");
        }
        ft.replace(getContentId(), f, "content");
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        ft.commit();
    } else {
        setContentNative(breadcrumb);
    }

    if (clearChoices)
        getListView().clearChoices();
}

From source file:android.support.v17.leanback.app.GuidedStepSupportFragment.java

/**
 * Convenient method to close GuidedStepSupportFragments on top of other content or finish Activity if
 * GuidedStepSupportFragments were started in a separate activity.  Pops all stack entries including
 * {@link #UI_STYLE_ENTRANCE}; if {@link #UI_STYLE_ENTRANCE} is not found, finish the activity.
 * Note that this method must be paired with {@link #add(FragmentManager, GuidedStepSupportFragment,
 * int)} which sets up the stack entry name for finding which fragment we need to pop back to.
 *///from   www.j  av a 2  s  .  co  m
public void finishGuidedStepSupportFragments() {
    final FragmentManager fragmentManager = getFragmentManager();
    final int entryCount = fragmentManager.getBackStackEntryCount();
    if (entryCount > 0) {
        for (int i = entryCount - 1; i >= 0; i--) {
            BackStackEntry entry = fragmentManager.getBackStackEntryAt(i);
            if (isStackEntryUiStyleEntrance(entry.getName())) {
                GuidedStepSupportFragment top = getCurrentGuidedStepSupportFragment(fragmentManager);
                if (top != null) {
                    top.setUiStyle(UI_STYLE_ENTRANCE);
                }
                fragmentManager.popBackStack(entry.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
                return;
            }
        }
    }
    ActivityCompat.finishAfterTransition(getActivity());
}

From source file:android.support.v17.leanback.app.GuidedStepSupportFragment.java

/**
 * Convenient method to pop to fragment with Given class.
 * @param  guidedStepFragmentClass  Name of the Class of GuidedStepSupportFragment to pop to.
 * @param flags Either 0 or {@link FragmentManager#POP_BACK_STACK_INCLUSIVE}.
 *///from   w  w w  .  j a  va2s . c o m
public void popBackStackToGuidedStepSupportFragment(Class guidedStepFragmentClass, int flags) {
    if (!GuidedStepSupportFragment.class.isAssignableFrom(guidedStepFragmentClass)) {
        return;
    }
    final FragmentManager fragmentManager = getFragmentManager();
    final int entryCount = fragmentManager.getBackStackEntryCount();
    String className = guidedStepFragmentClass.getName();
    if (entryCount > 0) {
        for (int i = entryCount - 1; i >= 0; i--) {
            BackStackEntry entry = fragmentManager.getBackStackEntryAt(i);
            String entryClassName = getGuidedStepSupportFragmentClassName(entry.getName());
            if (className.equals(entryClassName)) {
                fragmentManager.popBackStack(entry.getId(), flags);
                return;
            }
        }
    }
}

From source file:vn.cybersoft.obs.android.activities.MainActivity.java

public void swapToFragmentView(ScreenList newFragment) {
    Log.i(t, "swapToFragmentView: " + newFragment.toString());
    FragmentManager fragmentManager = getSupportFragmentManager();
    Fragment fragment = null;//from w ww .java2s.co  m
    if (ScreenList.BATTERY_INFO == newFragment) {
        fragment = fragmentManager.findFragmentById(BatteryInfoFragment.LAYOUT_ID);
        if (null == fragment) {
            fragment = new BatteryInfoFragment();
        }
    } else if (ScreenList.OPTIMIZATION == newFragment) {
        fragment = fragmentManager.findFragmentById(OptimizationFragment.LAYOUT_ID);
        if (null == fragment) {
            fragment = new OptimizationFragment();
        }
    } else if (ScreenList.CHARGE == newFragment) {
        fragment = fragmentManager.findFragmentById(ChargeFragment.LAYOUT_ID);
        if (null == fragment) {
            fragment = new ChargeFragment();
        }
    } else if (ScreenList.CONSUMPTION == newFragment) {
        fragment = fragmentManager.findFragmentById(ConsumptionFragment.LAYOUT_ID);
        if (null == fragment) {
            fragment = new ConsumptionFragment();
        }
    } else if (ScreenList.ABOUT == newFragment) {
        fragment = fragmentManager.findFragmentById(AboutFragment.LAYOUT_ID);
        if (null == fragment) {
            fragment = new AboutFragment();
        }
    } else {
        throw new IllegalStateException("Unrecognized ScreenList type");
    }

    currentFragment = newFragment;
    BackStackEntry entry = null;
    for (int i = 0; i < fragmentManager.getBackStackEntryCount(); ++i) {
        BackStackEntry e = fragmentManager.getBackStackEntryAt(i);
        if (e.getName().equals(currentFragment.name())) {
            entry = e;
            break;
        }
    }

    if (null != entry) {
        // flush backward, including the screen want to go back to
        //fragmentManager.popBackStackImmediate(currentFragment.name(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
        fragmentManager.popBackStack(currentFragment.name(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }

    // add transaction to show the screen we want
    FragmentTransaction transaction = fragmentManager.beginTransaction();
    transaction.replace(R.id.main_frame, fragment);
    transaction.addToBackStack(currentFragment.name());
    transaction.commit();
    levelSafeInvalidateOptionsMenu();
}