Guest User

Untitled

a guest
Oct 19th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. public class FragmentBackStackChangeListener implements FragmentManager.OnBackStackChangedListener {
  2.  
  3. private FragmentManager fragmentManager;
  4. private int lastBackStackEntryCount;
  5.  
  6. public FragmentBackStackChangeListener(FragmentManager fragmentManager) {
  7. this.fragmentManager = fragmentManager;
  8. lastBackStackEntryCount = fragmentManager.getBackStackEntryCount();
  9. }
  10.  
  11. @Override
  12. public void onBackStackChanged() {
  13. int currentBackStackEntryCount = fragmentManager.getBackStackEntryCount();
  14. if (currentBackStackEntryCount > 0) {
  15. Fragment parentFragment = getParentFragment(currentBackStackEntryCount);
  16. if (parentFragment != null) {
  17. if (wasPushed(currentBackStackEntryCount)) {
  18. parentFragment.onPause();
  19. } else if (wasPopped(currentBackStackEntryCount)) {
  20. parentFragment.onResume();
  21. }
  22. }
  23. }
  24.  
  25. lastBackStackEntryCount = currentBackStackEntryCount;
  26. }
  27.  
  28. private boolean wasPushed(int backStackEntryCount) {
  29. return lastBackStackEntryCount < backStackEntryCount;
  30. }
  31.  
  32. private boolean wasPopped(int backStackEntryCount) {
  33. return lastBackStackEntryCount > backStackEntryCount;
  34. }
  35.  
  36. private Fragment getParentFragment(int currentBackStackEntryCount) {
  37. FragmentManager.BackStackEntry backStackEntryAt = fragmentManager.getBackStackEntryAt(currentBackStackEntryCount - 1);
  38. return fragmentManager.findFragmentByTag(backStackEntryAt.getName());
  39. }
  40. }
Add Comment
Please, Sign In to add comment