Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class FragmentBackStackChangeListener implements FragmentManager.OnBackStackChangedListener {
- private FragmentManager fragmentManager;
- private int lastBackStackEntryCount;
- public FragmentBackStackChangeListener(FragmentManager fragmentManager) {
- this.fragmentManager = fragmentManager;
- lastBackStackEntryCount = fragmentManager.getBackStackEntryCount();
- }
- @Override
- public void onBackStackChanged() {
- int currentBackStackEntryCount = fragmentManager.getBackStackEntryCount();
- if (currentBackStackEntryCount > 0) {
- Fragment parentFragment = getParentFragment(currentBackStackEntryCount);
- if (parentFragment != null) {
- if (wasPushed(currentBackStackEntryCount)) {
- parentFragment.onPause();
- } else if (wasPopped(currentBackStackEntryCount)) {
- parentFragment.onResume();
- }
- }
- }
- lastBackStackEntryCount = currentBackStackEntryCount;
- }
- private boolean wasPushed(int backStackEntryCount) {
- return lastBackStackEntryCount < backStackEntryCount;
- }
- private boolean wasPopped(int backStackEntryCount) {
- return lastBackStackEntryCount > backStackEntryCount;
- }
- private Fragment getParentFragment(int currentBackStackEntryCount) {
- FragmentManager.BackStackEntry backStackEntryAt = fragmentManager.getBackStackEntryAt(currentBackStackEntryCount - 1);
- return fragmentManager.findFragmentByTag(backStackEntryAt.getName());
- }
- }
Add Comment
Please, Sign In to add comment