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:org.mariotaku.twidere.activity.support.DualPaneActivity.java

@Override
public void onBackStackChanged() {
    if (!isDualPaneMode())
        return;/*w  w w.  ja  va  2  s  . c om*/
    final FragmentManager fm = getSupportFragmentManager();
    final int count = fm.getBackStackEntryCount();
    final Fragment leftPaneFragment = fm.findFragmentById(PANE_LEFT);
    final Fragment rightPaneFragment = fm.findFragmentById(PANE_RIGHT);
    final boolean leftPaneUsed = leftPaneFragment != null && leftPaneFragment.isAdded();
    final boolean rightPaneUsed = rightPaneFragment != null && rightPaneFragment.isAdded();
    if (count > 0) {
        final BackStackEntry entry = fm.getBackStackEntryAt(count - 1);
        if (entry == null)
            return;
        final Fragment fragment = BackStackEntryTrojan.getFragmentInBackStackRecord(entry);
        if (fragment instanceof Panes.Right) {
            showRightPane();
        } else if (fragment instanceof Panes.Left) {
            showLeftPane();
        }
    } else {
        if (fm.findFragmentById(getMainViewId()) != null || leftPaneUsed) {
            showLeftPane();
        } else if (rightPaneUsed) {
            showRightPane();
        }
    }
    updateMainViewVisibility();
}

From source file:siarhei.luskanau.gps.tracker.free.ui.app.AppController.java

private void logDebug() {
    Log.d(TAG, "###########################");
    FragmentManager fragmentManager = activity.getSupportFragmentManager();
    List<Fragment> fragments = fragmentManager.getFragments();
    if (fragments != null) {
        for (Fragment fragment : fragments) {
            if (fragment != null) {
                Log.d(TAG, "FragmentManager.getFragments: " + fragment.getTag() + ": "
                        + fragment.getClass().getSimpleName());
            } else {
                Log.d(TAG, "FragmentManager.getFragments: null");
            }/*from  w  w  w.  j  a v  a2  s.c o m*/
        }
    }
    for (int i = 0; i < fragmentManager.getBackStackEntryCount(); i++) {
        FragmentManager.BackStackEntry backStackEntry = fragmentManager.getBackStackEntryAt(i);
        Log.d(TAG, "FragmentManager.getBackStackEntryAt: " + i + ": " + backStackEntry.getName());
    }
}

From source file:org.mariotaku.twidere.activity.DualPaneActivity.java

@Override
public void onBackStackChanged() {
    if (isDualPaneMode()) {
        final FragmentManager fm = getSupportFragmentManager();
        final int count = fm.getBackStackEntryCount();
        final Fragment left_pane_fragment = fm.findFragmentById(PANE_LEFT);
        final Fragment right_pane_fragment = fm.findFragmentById(PANE_RIGHT);
        final View main_view = findViewById(R.id.main);
        final boolean left_pane_used = left_pane_fragment != null && left_pane_fragment.isAdded();
        final boolean right_pane_used = right_pane_fragment != null && right_pane_fragment.isAdded();
        if (count > 0) {
            final BackStackEntry entry = fm.getBackStackEntryAt(count - 1);
            if (entry == null)
                return;
            final Fragment fragment = BackStackEntryTrojan.getFragmentInBackStackRecord(entry);
            if (fragment instanceof Panes.Right) {
                showRightPane();/*from   ww w. j a  va2  s  . c om*/
            } else if (fragment instanceof Panes.Left) {
                showLeftPane();
            }
        } else {
            if (fm.findFragmentById(R.id.main) != null || left_pane_used) {
                showLeftPane();
            } else if (right_pane_used) {
                showRightPane();
            }
        }
        if (main_view != null) {
            main_view.setVisibility(left_pane_used ? View.GONE : View.VISIBLE);
        }
    }
}

From source file:com.vinexs.eeb.BaseActivity.java

public void addFragment(int viewId, Fragment fragment) {
    if (fragment.isAdded()) {
        return;/*from ww w  . ja va2  s.c om*/
    }
    FragmentManager fragMgr = getSupportFragmentManager();
    FragmentTransaction transaction = fragMgr.beginTransaction();
    BackStackEntry lastEntry = fragMgr.getBackStackEntryCount() == 0 ? null
            : fragMgr.getBackStackEntryAt(fragMgr.getBackStackEntryCount() - 1);
    // Transaction options
    String fragName = fragment.getClass().getSimpleName();
    String breadCrumbTitle;
    String breadCrumbShortTitle;
    Boolean addToBackStack = false;
    int animationEnter = 0;
    int animationExit = 0;
    // Fill options
    Bundle args = fragment.getArguments();
    if (args != null) {
        if (args.containsKey("animationEnter") && args.containsKey("animationExit")) {
            animationEnter = args.getInt("animationEnter");
            animationExit = args.getInt("animationExit");
        }
        if (args.containsKey("breadCrumbTitle")) {
            breadCrumbTitle = args.getString("breadCrumbTitle");
        } else {
            breadCrumbTitle = (lastEntry != null) ? lastEntry.getBreadCrumbTitle().toString()
                    : Utility.getAppName(this);
        }
        if (args.containsKey("breadCrumbShortTitle")) {
            breadCrumbShortTitle = args.getString("breadCrumbShortTitle");
        } else {
            breadCrumbShortTitle = (lastEntry != null) ? lastEntry.getBreadCrumbShortTitle().toString()
                    : Utility.getAppName(this);
        }
        if (args.containsKey("fragmentName")) {
            fragName = args.getString("fragmentName");
        }
        if (args.containsKey("addToBackStack")) {
            addToBackStack = args.getBoolean("addToBackStack");
        }
    } else {
        breadCrumbTitle = (lastEntry != null) ? lastEntry.getBreadCrumbTitle().toString()
                : Utility.getAppName(this);
        breadCrumbShortTitle = (lastEntry != null) ? lastEntry.getBreadCrumbShortTitle().toString()
                : Utility.getAppName(this);
    }
    // Set option to fragment manager
    if (animationEnter != 0 && animationExit != 0) {
        transaction.setCustomAnimations(animationEnter, animationExit);
    }
    if (breadCrumbTitle != null && !breadCrumbTitle.isEmpty()) {
        transaction.setBreadCrumbTitle(breadCrumbTitle);
    }
    if (breadCrumbShortTitle != null && !breadCrumbShortTitle.isEmpty()) {
        transaction.setBreadCrumbShortTitle(breadCrumbShortTitle);
    }
    if (transaction.isAddToBackStackAllowed() && addToBackStack) {
        transaction.addToBackStack(fragName);
    }
    // Add fragment
    transaction.add(viewId, fragment, fragName).commitAllowingStateLoss();
}

From source file:com.vinexs.eeb.BaseActivity.java

public void replaceFragment(int viewId, Fragment fragment) {
    if (fragment.isAdded()) {
        return;//from w  ww .j  a va2  s . co m
    }
    FragmentManager fragMgr = getSupportFragmentManager();
    FragmentTransaction transaction = fragMgr.beginTransaction();
    BackStackEntry lastEntry = fragMgr.getBackStackEntryCount() == 0 ? null
            : fragMgr.getBackStackEntryAt(fragMgr.getBackStackEntryCount() - 1);
    // Transaction options
    String fragName = fragment.getClass().getSimpleName();
    String breadCrumbTitle;
    String breadCrumbShortTitle;
    Boolean addToBackStack = true;
    int animationEnter = 0;
    int animationExit = 0;
    // Fill options
    Bundle args = fragment.getArguments();
    if (args != null) {
        if (args.containsKey("animationEnter") && args.containsKey("animationExit")) {
            animationEnter = args.getInt("animationEnter");
            animationExit = args.getInt("animationExit");
        }
        if (args.containsKey("breadCrumbTitle")) {
            breadCrumbTitle = args.getString("breadCrumbTitle");
        } else {
            breadCrumbTitle = (lastEntry != null) ? lastEntry.getBreadCrumbTitle().toString()
                    : Utility.getAppName(this);
        }
        if (args.containsKey("breadCrumbShortTitle")) {
            breadCrumbShortTitle = args.getString("breadCrumbShortTitle");
        } else {
            breadCrumbShortTitle = (lastEntry != null) ? lastEntry.getBreadCrumbShortTitle().toString()
                    : Utility.getAppName(this);
        }
        if (args.containsKey("fragmentName")) {
            fragName = args.getString("fragmentName");
        }
        if (args.containsKey("addToBackStack")) {
            addToBackStack = args.getBoolean("addToBackStack");
        }
    } else {
        breadCrumbTitle = (lastEntry != null) ? lastEntry.getBreadCrumbTitle().toString()
                : Utility.getAppName(this);
        breadCrumbShortTitle = (lastEntry != null) ? lastEntry.getBreadCrumbShortTitle().toString()
                : Utility.getAppName(this);
    }
    // Set option to fragment manager
    if (animationEnter != 0 && animationExit != 0) {
        transaction.setCustomAnimations(animationEnter, animationExit);
    }
    if (breadCrumbTitle != null && !breadCrumbTitle.isEmpty()) {
        transaction.setBreadCrumbTitle(breadCrumbTitle);
    }
    if (breadCrumbShortTitle != null && !breadCrumbShortTitle.isEmpty()) {
        transaction.setBreadCrumbShortTitle(breadCrumbShortTitle);
    }
    if (transaction.isAddToBackStackAllowed() && addToBackStack) {
        transaction.addToBackStack(fragName);
    }
    // Replace fragment
    transaction.replace(viewId, fragment, fragName).commitAllowingStateLoss();
}

From source file:com.afayear.android.client.activity.DualPaneActivity.java

@Override
public void onBackStackChanged() {
    if (isDualPaneMode()) {
        final FragmentManager fm = getSupportFragmentManager();
        final int count = fm.getBackStackEntryCount();
        final Fragment left_pane_fragment = fm.findFragmentById(PANE_LEFT);
        final Fragment right_pane_fragment = fm.findFragmentById(PANE_RIGHT);
        final View main_view = findViewById(R.id.main);
        final boolean left_pane_used = left_pane_fragment != null && left_pane_fragment.isAdded();
        final boolean right_pane_used = right_pane_fragment != null && right_pane_fragment.isAdded();
        if (count > 0) {
            final BackStackEntry entry = fm.getBackStackEntryAt(count - 1);
            if (entry == null)
                return;
            final Fragment fragment = BackStackEntryTrojan.getFragmentInBackStackRecord(entry);
            if (fragment instanceof Panes.Right) {
                showRightPane();/*from   w  w  w  .j  a  va 2  s .  c  o m*/
            } else if (fragment instanceof Panes.Left) {
                showLeftPane();
            }
        } else {
            if (fm.findFragmentById(R.id.main) != null || left_pane_used) {
                showLeftPane();
            } else if (right_pane_used) {
                showRightPane();
            }
        }
        if (main_view != null) {
            final int visibility = left_pane_used ? View.GONE : View.VISIBLE;
            // Visibility changed, so start animation.
            if (main_view.getVisibility() != visibility) {
                final Animation anim = AnimationUtils.loadAnimation(this,
                        left_pane_used ? android.R.anim.fade_out : android.R.anim.fade_in);
                main_view.startAnimation(anim);
            }
            main_view.setVisibility(visibility);
        }
    }
}

From source file:com.vinexs.eeb.BaseActivity.java

/**
 * Require setDefaultBackStackListener() ran in onCreate
 *///from   w  w w  . java 2s.c  o m
protected void BackStackSyncStatus() {
    try {
        FragmentManager fragMgr = getSupportFragmentManager();
        int count = fragMgr.getBackStackEntryCount();
        if (count - 1 >= 0) {
            Log.d("TEST", "BackStackSyncStatus::(count - 1 >= 0) == true");
            BackStackEntry entry = fragMgr.getBackStackEntryAt(count - 1);
            String title = (String) entry.getBreadCrumbTitle();
            if (getSupportActionBar() != null) {
                setBackStackTitle(title);
                getSupportActionBar().setHomeButtonEnabled(true);
                if (!hasLeftDrawer && !hasRightDrawer) {
                    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
                }
            }
            if (drawerLayout != null) {
                drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.START);
                drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
            }
            if (drawerToggle != null) {
                drawerToggle.setDrawerIndicatorEnabled(false);
            }
            onBaseBackStackChanged(false, count);
        } else {
            if (getSupportActionBar() != null) {
                setBackStackTitle(Utility.getAppName(this));
                getSupportActionBar().setHomeButtonEnabled(false);
                if (!hasLeftDrawer && !hasRightDrawer) {
                    getSupportActionBar().setDisplayHomeAsUpEnabled(false);
                }
            }
            if (hasLeftDrawer) {
                drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.START);
                if (drawerToggle != null) {
                    drawerToggle.setDrawerIndicatorEnabled(true);
                }
            }
            if (hasRightDrawer) {
                drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
            }
            onBaseBackStackChanged(true, count);
        }
        if (drawerToggle != null) {
            drawerToggle.syncState();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

From source file:com.doplgangr.secrecy.views.MainActivity.java

void addFragment(final Fragment fragment, int transition1, int transition2) {
    if (mFragmentNameList.contains(fragment.getClass())) {
        mNavigation.setSelectedItem(mFragmentNameList.indexOf(fragment.getClass()));
    }/*  w  w w.ja  v a  2s .c  om*/
    String tag = fragment.getClass().getName();
    FragmentManager manager = getSupportFragmentManager();
    if (manager.getBackStackEntryCount() >= 1) {

        String activeFragmentTag = getSupportFragmentManager()
                .getBackStackEntryAt(getSupportFragmentManager().getBackStackEntryCount() - 1).getName();
        Fragment activeFragment = getSupportFragmentManager().findFragmentByTag(activeFragmentTag);
        // Don't switch fragment if already active
        if (activeFragment.getClass().equals(fragment.getClass())) {
            return;
        }
        //clear all except lowest
        FragmentManager.BackStackEntry first = manager.getBackStackEntryAt(0);
        manager.popBackStackImmediate(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }
    FragmentTransaction transaction = fragmentManager.beginTransaction()
            .setCustomAnimations(transition1, transition2).replace(R.id.content_frame, fragment, tag);
    if (fragment.getClass() != VaultsListFragment.class) {
        transaction = transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).addToBackStack(tag);
    }
    transaction.commit();
}

From source file:com.androzic.MainActivity.java

@Override
public void addFragment(Fragment fragment, String tag) {
    FragmentManager fm = getSupportFragmentManager();
    // Get topmost fragment
    Fragment parent;// www.jav  a2s.  c  o m
    if (fm.getBackStackEntryCount() > 0) {
        FragmentManager.BackStackEntry bse = fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1);
        parent = fm.findFragmentByTag(bse.getName());
    } else {
        parent = fm.findFragmentById(R.id.content_frame);
    }
    FragmentTransaction ft = fm.beginTransaction();
    // Detach parent
    ft.detach(parent);
    // Add new fragment to back stack
    ft.add(R.id.content_frame, fragment, tag);
    ft.addToBackStack(tag);
    ft.commit();
}

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

/**
 * ?fragmnet/*from  w w w  .  jav a2  s .c  o  m*/
 *
 * @return ?Fragment
 */
public BaseFragment getActiveFragment() {
    if (this.isFinishing()) {
        return null;
    }
    FragmentManager manager = this.getSupportFragmentManager();
    if (manager != null) {
        int count = manager.getBackStackEntryCount();
        if (count > 0) {
            String tag = manager.getBackStackEntryAt(count - 1).getName();
            return (BaseFragment) manager.findFragmentByTag(tag);
        }
    }
    return null;
}