/** * Replaces stack contents with just one fragment. */ public void replace(Fragment fragment) { manager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); manager.beginTransaction() .replace(containerId, fragment, indexToTag(0)) .commit(); manager.executePendingTransactions(); }
private List<Fragment> getFragments() { List<Fragment> fragments = new ArrayList<>(manager.getBackStackEntryCount() + 1); for (int i = 0; i < manager.getBackStackEntryCount() + 1; i++) { Fragment fragment = manager.findFragmentByTag(indexToTag(i)); if (fragment != null) fragments.add(fragment); } return fragments; }
/** * Pushes a fragment to the top of the stack. */ public void push(Fragment fragment) { Fragment top = peek(); if (top != null) { manager.beginTransaction() .setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_left, R.anim.exit_to_right) .remove(top) .add(containerId, fragment, indexToTag(manager.getBackStackEntryCount() + 1)) .addToBackStack(null) .commit(); } else { manager.beginTransaction() .add(containerId, fragment, indexToTag(0)) .commit(); } manager.executePendingTransactions(); }