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

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

Introduction

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

Prototype

public abstract int getBackStackEntryCount();

Source Link

Document

Return the number of entries currently in the back stack.

Usage

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

public Fragment getTopFragment() {
    FragmentManager fragMgr = getSupportFragmentManager();
    FragmentManager.BackStackEntry backEntry = fragMgr
            .getBackStackEntryAt(fragMgr.getBackStackEntryCount() - 1);
    String backEntryName = backEntry.getName();
    return fragMgr.findFragmentByTag(backEntryName);
}

From source file:com.kuassivi.october.util.Navigator.java

/**
 * Pops back to a specific BackStack position.
 * <p>/*  www  . j a va  2s .c  o m*/
 * It will detach and destroy forwarded Fragments.
 *
 * @param index index in the back stack entry
 */
public void popToStack(int index) {
    if (!(activity instanceof FragmentActivity)) {
        throw new RuntimeException("The activity must inherits from FragmentActivity or AppCompatActivity");
    }

    FragmentActivity fragmentActivity = (FragmentActivity) activity;
    FragmentManager fragmentManager = fragmentActivity.getSupportFragmentManager();

    /*
     * The method isFinishing() prevents to load a Fragment
     * when the activity is going to be killed or destroyed.
     */
    if (fragmentManager == null || fragmentActivity.isFinishing()) {
        return;
    }

    final int firstFragmentCount = 1;
    int backStackCount = fragmentManager.getBackStackEntryCount();

    if (backStackCount <= firstFragmentCount) {
        fragmentActivity.finish();
    } else {
        if (index > 0) {
            List<Fragment> fragments = fragmentManager.getFragments();
            this.fragment = fragments.get(index - 1);
            fragmentManager.popBackStackImmediate(index, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        }
    }
}

From source file:fe.up.pt.partner.FacebookActivity.java

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    uiHelper = new UiLifecycleHelper(this, callback);
    uiHelper.onCreate(savedInstanceState);

    Bundle b = getIntent().getExtras();/* w w  w  .ja va 2  s .  c  om*/
    title = b.getString("title");
    author = b.getString("author");
    rating = b.getString("rating");

    /*
     * este bloco  para imprimir a ash para depois se colocar no
     * site da app no facebook 
    */
    try {
        PackageInfo info = getPackageManager().getPackageInfo("fe.up.pt.partner",
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

    if (savedInstanceState != null) {
        String name = savedInstanceState.getString(PENDING_ACTION_BUNDLE_KEY);
        pendingAction = PendingAction.valueOf(name);
    }

    setContentView(R.layout.main);

    loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() {
        @Override
        public void onUserInfoFetched(GraphUser user) {
            FacebookActivity.this.user = user;
            updateUI();
            // It's possible that we were waiting for this.user to be populated in order to post a
            // status update.
            handlePendingAction();

        }
    });

    profilePictureView = (ProfilePictureView) findViewById(R.id.profilePicture);
    text_box = (EditText) findViewById(R.id.share_text);
    postStatusUpdateButton = (Button) findViewById(R.id.postStatusUpdateButton);
    cancelButton = (Button) findViewById(R.id.cancel_button);

    postStatusUpdateButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            onClickPostStatusUpdate();

        }
    });
    cancelButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            finish();

        }
    });

    controlsContainer = (ViewGroup) findViewById(R.id.main_ui_container);

    final FragmentManager fm = getSupportFragmentManager();

    // Listen for changes in the back stack so we know if a fragment got popped off because the user
    // clicked the back button.
    fm.addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
        @Override
        public void onBackStackChanged() {
            if (fm.getBackStackEntryCount() == 0) {
                // We need to re-show our UI.
                controlsContainer.setVisibility(View.VISIBLE);
            }
        }
    });
}

From source file:org.mythdroid.activities.Recordings.java

@Override
protected void resetContentView() {

    final FragmentManager fm = getSupportFragmentManager();

    ArrayList<String> backStackFrags = new ArrayList<String>();

    // At this stage dualPane reflects the old configuration
    boolean dualPane = findViewById(R.id.recdetails) != null;

    /* The old backstack is useless now, save the relevant entries */
    int backStackSize = fm.getBackStackEntryCount();
    for (int i = 0; i < backStackSize; i++) {
        Fragment lf = fm.findFragmentById(R.id.reclistframe);
        Fragment df = fm.findFragmentById(R.id.recdetails);
        Fragment f = (!dualPane || df == null ? lf : df);
        backStackFrags.add(0, f.getClass().getName());
        fm.popBackStackImmediate();//from   w  w  w .j  a va  2  s . c o  m
    }

    setContentView(R.layout.recordings);
    dualPane = findViewById(R.id.recdetails) != null;

    // Now dualPane reflects the new configuration

    listFragment = new RecListFragment();

    fm.beginTransaction().replace(R.id.reclistframe, listFragment).commitAllowingStateLoss();
    fm.executePendingTransactions();

    listFragment.setAdapter(recordings);

    // Restore the backstack
    for (String frag : backStackFrags) {
        // RecListFragment has handled this..
        if (dualPane && frag.equals(RecDetailFragment.class.getName()))
            continue;
        try {
            FragmentTransaction ft = fm.beginTransaction();
            Fragment f = (Fragment) Class.forName(frag).newInstance();
            ft.replace((dualPane ? R.id.recdetails : R.id.reclistframe), f, f.getClass().getSimpleName())
                    .addToBackStack(null).commitAllowingStateLoss();
        } catch (Exception e) {
            ErrUtil.reportErr(this, e);
            return;
        }
    }

    fm.executePendingTransactions();

}

From source file:can.yrt.onebusaway.ArrivalsListActivity.java

@Override
protected void onResume() {
    super.onResume();
    boolean newFrag = mNewFragment;
    mNewFragment = false;//www.  j  a  v a2  s .  co m
    if (newFrag) {
        FragmentManager fm = getSupportFragmentManager();

        ArrivalsListFragment list = new ArrivalsListFragment();
        list.setArguments(FragmentUtils.getIntentArgs(getIntent()));

        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(android.R.id.content, list);
        // This is a bit of a hack, but if there's a backstack
        // it means people navigated away from this activity while
        // in a report problem fragment.
        // In this case, we *want* to be a part of the backstack;
        // otherwise we just want to clear everything out.
        if (fm.getBackStackEntryCount() > 0) {
            ft.addToBackStack(null);
        }
        ft.commit();
    }
}

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

public void addFragment(int viewId, Fragment fragment) {
    if (fragment.isAdded()) {
        return;//w w w  .  j ava 2s  .  c  o  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 = 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;/*w  w  w.  ja v a2s .  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.btmura.android.reddit.app.AbstractBrowserActivity.java

private void safePopBackStackImmediate() {
    FragmentManager fm = getSupportFragmentManager();
    if (fm.getBackStackEntryCount() > 0) {
        fm.removeOnBackStackChangedListener(this);
        fm.popBackStackImmediate();//from   ww w  .  j a v a  2s.  co m
        fm.addOnBackStackChangedListener(this);
    }
}

From source file:com.btmura.android.reddit.app.AbstractBrowserActivity.java

private void handleHome(MenuItem item) {
    FragmentManager fm = getSupportFragmentManager();
    if (fm.getBackStackEntryCount() > 0) {
        fm.popBackStack();// www.  j  a  v  a2s.c  o  m
    } else if ((bar.getDisplayOptions() & ActionBar.DISPLAY_HOME_AS_UP) != 0) {
        finish();
    }
}

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()}.
 *//*from   w ww  .  j a  v a2 s.c  o 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
}