List of usage examples for android.support.v4.app FragmentManager getBackStackEntryCount
public abstract int getBackStackEntryCount();
From source file:com.vinexs.eeb.BaseActivity.java
public Fragment getTopFragment() { FragmentManager fragMgr = getSupportFragmentManager(); FragmentManager.BackStackEntry backEntry = fragMgr .getBackStackEntryAt(fragMgr.getBackStackEntryCount() - 1); String backEntryName = backEntry.getName(); return fragMgr.findFragmentByTag(backEntryName); }
From source file:com.kuassivi.october.util.Navigator.java
/** * Pops back to a specific BackStack position. * <p>/* www . j a va 2s .c o m*/ * It will detach and destroy forwarded Fragments. * * @param index index in the back stack entry */ public void popToStack(int index) { if (!(activity instanceof FragmentActivity)) { throw new RuntimeException("The activity must inherits from FragmentActivity or AppCompatActivity"); } FragmentActivity fragmentActivity = (FragmentActivity) activity; FragmentManager fragmentManager = fragmentActivity.getSupportFragmentManager(); /* * The method isFinishing() prevents to load a Fragment * when the activity is going to be killed or destroyed. */ if (fragmentManager == null || fragmentActivity.isFinishing()) { return; } final int firstFragmentCount = 1; int backStackCount = fragmentManager.getBackStackEntryCount(); if (backStackCount <= firstFragmentCount) { fragmentActivity.finish(); } else { if (index > 0) { List<Fragment> fragments = fragmentManager.getFragments(); this.fragment = fragments.get(index - 1); fragmentManager.popBackStackImmediate(index, FragmentManager.POP_BACK_STACK_INCLUSIVE); } } }
From source file:fe.up.pt.partner.FacebookActivity.java
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); uiHelper = new UiLifecycleHelper(this, callback); uiHelper.onCreate(savedInstanceState); Bundle b = getIntent().getExtras();/* w w w .ja va 2 s . c om*/ title = b.getString("title"); author = b.getString("author"); rating = b.getString("rating"); /* * este bloco para imprimir a ash para depois se colocar no * site da app no facebook */ try { PackageInfo info = getPackageManager().getPackageInfo("fe.up.pt.partner", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } if (savedInstanceState != null) { String name = savedInstanceState.getString(PENDING_ACTION_BUNDLE_KEY); pendingAction = PendingAction.valueOf(name); } setContentView(R.layout.main); loginButton = (LoginButton) findViewById(R.id.login_button); loginButton.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() { @Override public void onUserInfoFetched(GraphUser user) { FacebookActivity.this.user = user; updateUI(); // It's possible that we were waiting for this.user to be populated in order to post a // status update. handlePendingAction(); } }); profilePictureView = (ProfilePictureView) findViewById(R.id.profilePicture); text_box = (EditText) findViewById(R.id.share_text); postStatusUpdateButton = (Button) findViewById(R.id.postStatusUpdateButton); cancelButton = (Button) findViewById(R.id.cancel_button); postStatusUpdateButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { onClickPostStatusUpdate(); } }); cancelButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { finish(); } }); controlsContainer = (ViewGroup) findViewById(R.id.main_ui_container); final FragmentManager fm = getSupportFragmentManager(); // Listen for changes in the back stack so we know if a fragment got popped off because the user // clicked the back button. fm.addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() { @Override public void onBackStackChanged() { if (fm.getBackStackEntryCount() == 0) { // We need to re-show our UI. controlsContainer.setVisibility(View.VISIBLE); } } }); }
From source file:org.mythdroid.activities.Recordings.java
@Override protected void resetContentView() { final FragmentManager fm = getSupportFragmentManager(); ArrayList<String> backStackFrags = new ArrayList<String>(); // At this stage dualPane reflects the old configuration boolean dualPane = findViewById(R.id.recdetails) != null; /* The old backstack is useless now, save the relevant entries */ int backStackSize = fm.getBackStackEntryCount(); for (int i = 0; i < backStackSize; i++) { Fragment lf = fm.findFragmentById(R.id.reclistframe); Fragment df = fm.findFragmentById(R.id.recdetails); Fragment f = (!dualPane || df == null ? lf : df); backStackFrags.add(0, f.getClass().getName()); fm.popBackStackImmediate();//from w w w .j a va 2 s . c o m } setContentView(R.layout.recordings); dualPane = findViewById(R.id.recdetails) != null; // Now dualPane reflects the new configuration listFragment = new RecListFragment(); fm.beginTransaction().replace(R.id.reclistframe, listFragment).commitAllowingStateLoss(); fm.executePendingTransactions(); listFragment.setAdapter(recordings); // Restore the backstack for (String frag : backStackFrags) { // RecListFragment has handled this.. if (dualPane && frag.equals(RecDetailFragment.class.getName())) continue; try { FragmentTransaction ft = fm.beginTransaction(); Fragment f = (Fragment) Class.forName(frag).newInstance(); ft.replace((dualPane ? R.id.recdetails : R.id.reclistframe), f, f.getClass().getSimpleName()) .addToBackStack(null).commitAllowingStateLoss(); } catch (Exception e) { ErrUtil.reportErr(this, e); return; } } fm.executePendingTransactions(); }
From source file:can.yrt.onebusaway.ArrivalsListActivity.java
@Override protected void onResume() { super.onResume(); boolean newFrag = mNewFragment; mNewFragment = false;//www. j a v a2 s . co m if (newFrag) { FragmentManager fm = getSupportFragmentManager(); ArrivalsListFragment list = new ArrivalsListFragment(); list.setArguments(FragmentUtils.getIntentArgs(getIntent())); FragmentTransaction ft = fm.beginTransaction(); ft.replace(android.R.id.content, list); // This is a bit of a hack, but if there's a backstack // it means people navigated away from this activity while // in a report problem fragment. // In this case, we *want* to be a part of the backstack; // otherwise we just want to clear everything out. if (fm.getBackStackEntryCount() > 0) { ft.addToBackStack(null); } ft.commit(); } }
From source file:com.vinexs.eeb.BaseActivity.java
public void addFragment(int viewId, Fragment fragment) { if (fragment.isAdded()) { return;//w w w . j ava 2s . c o m } FragmentManager fragMgr = getSupportFragmentManager(); FragmentTransaction transaction = fragMgr.beginTransaction(); BackStackEntry lastEntry = fragMgr.getBackStackEntryCount() == 0 ? null : fragMgr.getBackStackEntryAt(fragMgr.getBackStackEntryCount() - 1); // Transaction options String fragName = fragment.getClass().getSimpleName(); String breadCrumbTitle; String breadCrumbShortTitle; Boolean addToBackStack = false; int animationEnter = 0; int animationExit = 0; // Fill options Bundle args = fragment.getArguments(); if (args != null) { if (args.containsKey("animationEnter") && args.containsKey("animationExit")) { animationEnter = args.getInt("animationEnter"); animationExit = args.getInt("animationExit"); } if (args.containsKey("breadCrumbTitle")) { breadCrumbTitle = args.getString("breadCrumbTitle"); } else { breadCrumbTitle = (lastEntry != null) ? lastEntry.getBreadCrumbTitle().toString() : Utility.getAppName(this); } if (args.containsKey("breadCrumbShortTitle")) { breadCrumbShortTitle = args.getString("breadCrumbShortTitle"); } else { breadCrumbShortTitle = (lastEntry != null) ? lastEntry.getBreadCrumbShortTitle().toString() : Utility.getAppName(this); } if (args.containsKey("fragmentName")) { fragName = args.getString("fragmentName"); } if (args.containsKey("addToBackStack")) { addToBackStack = args.getBoolean("addToBackStack"); } } else { breadCrumbTitle = (lastEntry != null) ? lastEntry.getBreadCrumbTitle().toString() : Utility.getAppName(this); breadCrumbShortTitle = (lastEntry != null) ? lastEntry.getBreadCrumbShortTitle().toString() : Utility.getAppName(this); } // Set option to fragment manager if (animationEnter != 0 && animationExit != 0) { transaction.setCustomAnimations(animationEnter, animationExit); } if (breadCrumbTitle != null && !breadCrumbTitle.isEmpty()) { transaction.setBreadCrumbTitle(breadCrumbTitle); } if (breadCrumbShortTitle != null && !breadCrumbShortTitle.isEmpty()) { transaction.setBreadCrumbShortTitle(breadCrumbShortTitle); } if (transaction.isAddToBackStackAllowed() && addToBackStack) { transaction.addToBackStack(fragName); } // Add fragment transaction.add(viewId, fragment, fragName).commitAllowingStateLoss(); }
From source file:com.vinexs.eeb.BaseActivity.java
public void replaceFragment(int viewId, Fragment fragment) { if (fragment.isAdded()) { return;/*w w w. ja v a2s . co m*/ } FragmentManager fragMgr = getSupportFragmentManager(); FragmentTransaction transaction = fragMgr.beginTransaction(); BackStackEntry lastEntry = fragMgr.getBackStackEntryCount() == 0 ? null : fragMgr.getBackStackEntryAt(fragMgr.getBackStackEntryCount() - 1); // Transaction options String fragName = fragment.getClass().getSimpleName(); String breadCrumbTitle; String breadCrumbShortTitle; Boolean addToBackStack = true; int animationEnter = 0; int animationExit = 0; // Fill options Bundle args = fragment.getArguments(); if (args != null) { if (args.containsKey("animationEnter") && args.containsKey("animationExit")) { animationEnter = args.getInt("animationEnter"); animationExit = args.getInt("animationExit"); } if (args.containsKey("breadCrumbTitle")) { breadCrumbTitle = args.getString("breadCrumbTitle"); } else { breadCrumbTitle = (lastEntry != null) ? lastEntry.getBreadCrumbTitle().toString() : Utility.getAppName(this); } if (args.containsKey("breadCrumbShortTitle")) { breadCrumbShortTitle = args.getString("breadCrumbShortTitle"); } else { breadCrumbShortTitle = (lastEntry != null) ? lastEntry.getBreadCrumbShortTitle().toString() : Utility.getAppName(this); } if (args.containsKey("fragmentName")) { fragName = args.getString("fragmentName"); } if (args.containsKey("addToBackStack")) { addToBackStack = args.getBoolean("addToBackStack"); } } else { breadCrumbTitle = (lastEntry != null) ? lastEntry.getBreadCrumbTitle().toString() : Utility.getAppName(this); breadCrumbShortTitle = (lastEntry != null) ? lastEntry.getBreadCrumbShortTitle().toString() : Utility.getAppName(this); } // Set option to fragment manager if (animationEnter != 0 && animationExit != 0) { transaction.setCustomAnimations(animationEnter, animationExit); } if (breadCrumbTitle != null && !breadCrumbTitle.isEmpty()) { transaction.setBreadCrumbTitle(breadCrumbTitle); } if (breadCrumbShortTitle != null && !breadCrumbShortTitle.isEmpty()) { transaction.setBreadCrumbShortTitle(breadCrumbShortTitle); } if (transaction.isAddToBackStackAllowed() && addToBackStack) { transaction.addToBackStack(fragName); } // Replace fragment transaction.replace(viewId, fragment, fragName).commitAllowingStateLoss(); }
From source file:com.btmura.android.reddit.app.AbstractBrowserActivity.java
private void safePopBackStackImmediate() { FragmentManager fm = getSupportFragmentManager(); if (fm.getBackStackEntryCount() > 0) { fm.removeOnBackStackChangedListener(this); fm.popBackStackImmediate();//from ww w . j a v a 2s. co m fm.addOnBackStackChangedListener(this); } }
From source file:com.btmura.android.reddit.app.AbstractBrowserActivity.java
private void handleHome(MenuItem item) { FragmentManager fm = getSupportFragmentManager(); if (fm.getBackStackEntryCount() > 0) { fm.popBackStack();// www. j a v a2s.c o m } else if ((bar.getDisplayOptions() & ActionBar.DISPLAY_HOME_AS_UP) != 0) { finish(); } }
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()}. *//*from w ww . j a v a2 s.c o 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 }