List of usage examples for android.support.v4.app FragmentManager getBackStackEntryAt
public abstract BackStackEntry getBackStackEntryAt(int index);
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()}. *//* ww w . ja v a2 s . co 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 }
From source file:cn.edu.zafu.corepage.base.BaseActivity.java
/** * fragment//from ww w. j a v a2s . co m * @param pageName page?? * @return ?Fragment */ @Override public boolean findPage(String pageName) { int size = mActivities.size(); int j = size - 1; boolean hasFind = false; for (; j >= 0; j--) { WeakReference<BaseActivity> ref = mActivities.get(j); if (ref != null) { BaseActivity item = ref.get(); if (item == null) { Log.d(TAG, "item is null"); continue; } FragmentManager manager = item.getSupportFragmentManager(); int count = manager.getBackStackEntryCount(); for (int i = count - 1; i >= 0; i--) { String name = manager.getBackStackEntryAt(i).getName(); if (name.equalsIgnoreCase(pageName)) { hasFind = true; break; } } if (hasFind) { break; } } } return hasFind; }
From source file:org.wikipedia.gallery.GalleryActivity.java
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gallery); initToolbar();/* w ww . j av a 2 s . co m*/ toolbarContainer = findViewById(R.id.gallery_toolbar_container); infoContainer = findViewById(R.id.gallery_info_container); setBackgroundGradient(infoContainer, Gravity.BOTTOM); progressBar = findViewById(R.id.gallery_progressbar); descriptionText = findViewById(R.id.gallery_description_text); descriptionText.setShadowLayer(2, 1, 1, color(R.color.black54)); descriptionText.setMovementMethod(linkMovementMethod); licenseIcon = findViewById(R.id.gallery_license_icon); licenseIcon.setOnClickListener(licenseShortClickListener); licenseIcon.setOnLongClickListener(licenseLongClickListener); creditText = findViewById(R.id.gallery_credit_text); creditText.setShadowLayer(2, 1, 1, color(R.color.black54)); errorView = findViewById(R.id.view_gallery_error); ((ImageView) errorView.findViewById(R.id.view_wiki_error_icon)).setColorFilter(color(R.color.base70)); ((TextView) errorView.findViewById(R.id.view_wiki_error_text)).setTextColor(color(R.color.base70)); errorView.setBackClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); errorView.setRetryClickListener(new View.OnClickListener() { @Override public void onClick(View v) { errorView.setVisibility(View.GONE); loadGalleryContent(); } }); if (getIntent().hasExtra(EXTRA_PAGETITLE)) { pageTitle = getIntent().getParcelableExtra(EXTRA_PAGETITLE); } initialFilename = getIntent().getStringExtra(EXTRA_FILENAME); wiki = getIntent().getParcelableExtra(EXTRA_WIKI); galleryCache = new HashMap<>(); galleryAdapter = new GalleryItemAdapter(this); galleryPager = findViewById(R.id.gallery_item_pager); galleryPager.setAdapter(galleryAdapter); pageChangeListener = new GalleryPageChangeListener(); galleryPager.addOnPageChangeListener(pageChangeListener); funnel = new GalleryFunnel(app, wiki, getIntent().getIntExtra(EXTRA_SOURCE, 0)); if (savedInstanceState == null) { if (initialFilename != null) { funnel.logGalleryOpen(pageTitle, initialFilename); } } else { controlsShowing = savedInstanceState.getBoolean("controlsShowing"); initialImageIndex = savedInstanceState.getInt("pagerIndex"); // if we have a savedInstanceState, then the initial index overrides // the initial Title from our intent. initialFilename = null; FragmentManager fm = getSupportFragmentManager(); if (getSupportFragmentManager().getBackStackEntryCount() > 0) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); for (int i = 0; i < fm.getBackStackEntryCount(); i++) { Fragment fragment = fm.findFragmentById(fm.getBackStackEntryAt(i).getId()); if (fragment instanceof GalleryItemFragment) { ft.remove(fragment); } } ft.commitAllowingStateLoss(); } } toolbarContainer.post(new Runnable() { @Override public void run() { setControlsShowing(controlsShowing); } }); loadGalleryContent(); }
From source file:cn.edu.zafu.corepage.base.BaseActivity.java
/** * ??//from www . jav a2 s . c om * @param fragmentTag fragmenttag * @return Fragment?? */ @Override public boolean isFragmentTop(String fragmentTag) { int size = mActivities.size(); if (size > 0) { WeakReference<BaseActivity> ref = mActivities.get(size - 1); BaseActivity item = ref.get(); if (item != null && item == this) { FragmentActivity activity = item; FragmentManager manager = activity.getSupportFragmentManager(); if (manager != null) { int count = manager.getBackStackEntryCount(); if (count >= 1) { FragmentManager.BackStackEntry entry = manager.getBackStackEntryAt(count - 1); if (entry.getName().equalsIgnoreCase(fragmentTag)) { return true; } } } } } return false; }
From source file:uk.co.nevarneyok.ux.MainActivity.java
/** * Method clear fragment backStack (back history). On bottom of stack will remain Fragment added by {@link #addInitialFragment()}. *//* www . j av a2 s . co 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.popBackStackImmediate(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< }
From source file:com.koushikdutta.widgets.ListContentFragmentInternal.java
@SuppressLint("InlinedApi") void setContentNative(final String breadcrumb) { android.app.Fragment f = (android.app.Fragment) mCurrentContent; Activity fa = getActivity();//from w w w . j a v a 2 s . co m final android.app.FragmentManager fm = fa.getFragmentManager(); android.app.FragmentTransaction ft = fm.beginTransaction(); if (isPaged()) { if (listener == null) { fm.addOnBackStackChangedListener(new android.app.FragmentManager.OnBackStackChangedListener() { { listener = this; } @Override public void onBackStackChanged() { android.app.Fragment f = (android.app.Fragment) getFragment(); if (f.isDetached() || f.isRemoving()) { fm.removeOnBackStackChangedListener(this); return; } View v = getFragment().getView(); if (v == null) return; final View l = v.findViewById(R.id.list_fragment); if (l == null) return; if (fm.getBackStackEntryCount() > 0 && "content" .equals(fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1).getName())) { l.setVisibility(View.GONE); } else { l.setVisibility(View.VISIBLE); } } }); } fm.popBackStack("content", android.app.FragmentManager.POP_BACK_STACK_INCLUSIVE); ft.setBreadCrumbTitle(breadcrumb); ft.setBreadCrumbShortTitle(breadcrumb); ft.addToBackStack("content"); } ft.replace(getContentId(), f, "content"); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.commit(); }
From source file:com.koushikdutta.widgets.ListContentFragmentInternal.java
public void setContent(FragmentInterfaceWrapper content, boolean clearChoices, String breadcrumb) { mCurrentContent = content;/*from w w w .j ava2s. com*/ if (getActivity() instanceof FragmentActivity) { Fragment f = (Fragment) mCurrentContent; FragmentActivity fa = (FragmentActivity) getActivity(); final FragmentManager fm = fa.getSupportFragmentManager(); FragmentTransaction ft = fa.getSupportFragmentManager().beginTransaction(); if (isPaged()) { View v = getFragment().getView(); Assert.assertNotNull(v); final View l = v.findViewById(R.id.list_fragment); Assert.assertNotNull(l); l.setVisibility(View.GONE); fm.addOnBackStackChangedListener(new OnBackStackChangedListener() { { listener = this; } @Override public void onBackStackChanged() { Fragment f = (Fragment) getFragment(); if (f.isDetached() || f.isRemoving()) { fm.removeOnBackStackChangedListener(this); return; } View v = getFragment().getView(); if (v == null) return; final View l = v.findViewById(R.id.list_fragment); if (l == null) return; if (fm.getBackStackEntryCount() > 0 && "content" .equals(fm.getBackStackEntryAt(fm.getBackStackEntryCount() - 1).getName())) { l.setVisibility(View.GONE); } else { l.setVisibility(View.VISIBLE); } } }); fm.popBackStack("content", FragmentManager.POP_BACK_STACK_INCLUSIVE); ft.setBreadCrumbTitle(breadcrumb); ft.setBreadCrumbShortTitle(breadcrumb); ft.addToBackStack("content"); } ft.replace(getContentId(), f, "content"); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.commit(); } else { setContentNative(breadcrumb); } if (clearChoices) getListView().clearChoices(); }
From source file:android.support.v17.leanback.app.GuidedStepSupportFragment.java
/** * Convenient method to close GuidedStepSupportFragments on top of other content or finish Activity if * GuidedStepSupportFragments were started in a separate activity. Pops all stack entries including * {@link #UI_STYLE_ENTRANCE}; if {@link #UI_STYLE_ENTRANCE} is not found, finish the activity. * Note that this method must be paired with {@link #add(FragmentManager, GuidedStepSupportFragment, * int)} which sets up the stack entry name for finding which fragment we need to pop back to. *///from www.j av a 2 s . co m public void finishGuidedStepSupportFragments() { final FragmentManager fragmentManager = getFragmentManager(); final int entryCount = fragmentManager.getBackStackEntryCount(); if (entryCount > 0) { for (int i = entryCount - 1; i >= 0; i--) { BackStackEntry entry = fragmentManager.getBackStackEntryAt(i); if (isStackEntryUiStyleEntrance(entry.getName())) { GuidedStepSupportFragment top = getCurrentGuidedStepSupportFragment(fragmentManager); if (top != null) { top.setUiStyle(UI_STYLE_ENTRANCE); } fragmentManager.popBackStack(entry.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE); return; } } } ActivityCompat.finishAfterTransition(getActivity()); }
From source file:android.support.v17.leanback.app.GuidedStepSupportFragment.java
/** * Convenient method to pop to fragment with Given class. * @param guidedStepFragmentClass Name of the Class of GuidedStepSupportFragment to pop to. * @param flags Either 0 or {@link FragmentManager#POP_BACK_STACK_INCLUSIVE}. *///from w w w . j a va2s . c o m public void popBackStackToGuidedStepSupportFragment(Class guidedStepFragmentClass, int flags) { if (!GuidedStepSupportFragment.class.isAssignableFrom(guidedStepFragmentClass)) { return; } final FragmentManager fragmentManager = getFragmentManager(); final int entryCount = fragmentManager.getBackStackEntryCount(); String className = guidedStepFragmentClass.getName(); if (entryCount > 0) { for (int i = entryCount - 1; i >= 0; i--) { BackStackEntry entry = fragmentManager.getBackStackEntryAt(i); String entryClassName = getGuidedStepSupportFragmentClassName(entry.getName()); if (className.equals(entryClassName)) { fragmentManager.popBackStack(entry.getId(), flags); return; } } } }
From source file:vn.cybersoft.obs.android.activities.MainActivity.java
public void swapToFragmentView(ScreenList newFragment) { Log.i(t, "swapToFragmentView: " + newFragment.toString()); FragmentManager fragmentManager = getSupportFragmentManager(); Fragment fragment = null;//from w ww .java2s.co m if (ScreenList.BATTERY_INFO == newFragment) { fragment = fragmentManager.findFragmentById(BatteryInfoFragment.LAYOUT_ID); if (null == fragment) { fragment = new BatteryInfoFragment(); } } else if (ScreenList.OPTIMIZATION == newFragment) { fragment = fragmentManager.findFragmentById(OptimizationFragment.LAYOUT_ID); if (null == fragment) { fragment = new OptimizationFragment(); } } else if (ScreenList.CHARGE == newFragment) { fragment = fragmentManager.findFragmentById(ChargeFragment.LAYOUT_ID); if (null == fragment) { fragment = new ChargeFragment(); } } else if (ScreenList.CONSUMPTION == newFragment) { fragment = fragmentManager.findFragmentById(ConsumptionFragment.LAYOUT_ID); if (null == fragment) { fragment = new ConsumptionFragment(); } } else if (ScreenList.ABOUT == newFragment) { fragment = fragmentManager.findFragmentById(AboutFragment.LAYOUT_ID); if (null == fragment) { fragment = new AboutFragment(); } } else { throw new IllegalStateException("Unrecognized ScreenList type"); } currentFragment = newFragment; BackStackEntry entry = null; for (int i = 0; i < fragmentManager.getBackStackEntryCount(); ++i) { BackStackEntry e = fragmentManager.getBackStackEntryAt(i); if (e.getName().equals(currentFragment.name())) { entry = e; break; } } if (null != entry) { // flush backward, including the screen want to go back to //fragmentManager.popBackStackImmediate(currentFragment.name(), FragmentManager.POP_BACK_STACK_INCLUSIVE); fragmentManager.popBackStack(currentFragment.name(), FragmentManager.POP_BACK_STACK_INCLUSIVE); } // add transaction to show the screen we want FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.replace(R.id.main_frame, fragment); transaction.addToBackStack(currentFragment.name()); transaction.commit(); levelSafeInvalidateOptionsMenu(); }