@SuppressWarnings("deprecation") @Deprecated @TargetApi(Build.VERSION_CODES.O) private void findAllFragmentsWithViews( @NonNull android.app.FragmentManager fragmentManager, @NonNull ArrayMap<View, android.app.Fragment> result) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { for (android.app.Fragment fragment : fragmentManager.getFragments()) { if (fragment.getView() != null) { result.put(fragment.getView(), fragment); findAllFragmentsWithViews(fragment.getChildFragmentManager(), result); } } } else { findAllFragmentsWithViewsPreO(fragmentManager, result); } }
private OnBackStackChangedListener getListener() { OnBackStackChangedListener result = new OnBackStackChangedListener() { public void onBackStackChanged() { FragmentManager manager = getSupportFragmentManager(); if (manager != null) { int backStackEntryCount = manager.getBackStackEntryCount(); if (backStackEntryCount == 0) { finish(); } Fragment fragment = manager.getFragments() .get(backStackEntryCount - 1); fragment.onResume(); } } }; return result; }
private Fragment getCurrentFragment() { FragmentManager fragmentManager = myActivity.getSupportFragmentManager(); int stackCount = fragmentManager.getBackStackEntryCount(); if( fragmentManager.getFragments() != null ) return fragmentManager.getFragments().get( stackCount > 0 ? stackCount-1 : stackCount ); else return null; }
getSupportFragmentManager().addOnBackStackChangedListener(new OnBackStackChangedListener() { public void onBackStackChanged() { FragmentManager fm = getSupportFragmentManager(); if (fm != null) { int bseCount = fm.getBackStackEntryCount(); if (bseCount > 0) { Fragment fragment = fm.getFragments().get(bseCount - 1); fragment.onResume(); } } } });
private boolean loadPreviousFragment() { FragmentManager fm = getSupportFragmentManager(); for(int i = 0; i < fm.getBackStackEntryCount(); i++){ if(fm.getBackStackEntryAt(i).getName().equals(FRAGMENT_A )){ fm.getFragments().get(i).onResume(); return true; } if(fm.getBackStackEntryAt(i).getName().equals(FRAGMENT_B )){ fm.getFragments().get(i).onResume(); return true; } } }
private void saveDataInSaveableFragments() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ FragmentManager fm = getFragmentManager(); final List<Fragment> fragments = fm.getFragments(); for (Fragment fragment : fragments) { if (fragment instanceof SaveableFragment) { ((SaveableFragment) fragment).save(); } } } }
@Override public void onBackPressed() { SparseArray<FragmentManager> managers = new SparseArray<>(); traverseManagers(getSupportFragmentManager(), managers, 0); if (managers.size() > 0) { managers.valueAt(managers.size() - 1).popBackStackImmediate(); } else { super.onBackPressed(); } } private void traverseManagers(FragmentManager manager, SparseArray<FragmentManager> managers, int intent) { if (manager.getBackStackEntryCount() > 0) { managers.put(intent, manager); } if (manager.getFragments() == null) { return; } for (Fragment fragment : manager.getFragments()) { if (fragment != null) traverseManagers(fragment.getChildFragmentManager(), managers, intent + 1); } }
int count = fm.getFragments().size(); BaseFragment f = (BaseFragment)fm.getFragments().get(count-1); f.setDisableTransitionAnimations(true);
@TargetApi(Build.VERSION_CODES.O) private void findAllFragmentsWithViews( android.app.FragmentManager fragmentManager, ArrayMap<View, android.app.Fragment> result) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { for (android.app.Fragment fragment : fragmentManager.getFragments()) { if (fragment.getView() != null) { result.put(fragment.getView(), fragment); findAllFragmentsWithViews(fragment.getChildFragmentManager(), result); } } } else { findAllFragmentsWithViewsPreO(fragmentManager, result); } }