android.support.v4.app.FragmentManager#getBackStackEntryCount ( )源码实例Demo

下面列出了android.support.v4.app.FragmentManager#getBackStackEntryCount ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Wizard   文件: Wizard.java
public boolean navigateNext() {
  if (!activity.isFinishing()) {
    FragmentManager fragmentManager = activity.getSupportFragmentManager();
    int nextStep = fragmentManager.getBackStackEntryCount() + 1;
    if (nextStep < pages.length) {
      WizardPage WizardPage = pages[nextStep];
      Fragment fragment = WizardPage.createFragment();
      fragmentManager.beginTransaction()
          .addToBackStack(fragment.getClass().getName())
          .setCustomAnimations(enterAnimation, exitAnimation, popEnterAnimation, popExitAnimation)
          .replace(containerId, fragment)
          .commit();
      fragmentManager.executePendingTransactions();
      return true;
    } else if (wizardListener != null) {
      wizardListener.onWizardFinished();
    }
  }
  return false;
}
 
源代码2 项目: Pioneer   文件: Navigator.java
public static boolean hasBackStackEntry(FragmentManager fragmentManager) {
    int count = fragmentManager.getBackStackEntryCount();
    if (count > 0) {
        return true;
    }
    if (isFragmentInBackStack != null) {
        List<Fragment> fragments = fragmentManager.getFragments();
        if (fragments != null) {
            for (Fragment frag : fragments) {
                if (frag != null && isInBackStack(frag)) {
                    return true;
                }
            }
        }
    }
    return false;
}
 
private void onSessionStateChange(Session session, SessionState state, Exception exception) {
    if (isResumed) {
        FragmentManager manager = getSupportFragmentManager();
        int backStackSize = manager.getBackStackEntryCount();
        for (int i = 0; i < backStackSize; i++) {
            manager.popBackStack();
        }
        // check for the OPENED state instead of session.isOpened() since for the
        // OPENED_TOKEN_UPDATED state, the selection fragment should already be showing.
        if (state.equals(SessionState.OPENED)) {
            showFragment(SELECTION, false);
        } else if (state.isClosed()) {
            showFragment(SPLASH, false);
        }
    }
}
 
源代码4 项目: rcloneExplorer   文件: MainActivity.java
private void startPinnedRemote(RemoteItem remoteItem) {
    if (fragment != null && fragment instanceof FileExplorerFragment) {
        FragmentManager fragmentManager = getSupportFragmentManager();

        // this is the case when remote gets started from a shortcut
        // therefore back should exit the app, and not go into remotes screen
        if (fragmentManager.getBackStackEntryCount() == 0) {
            startRemote(remoteItem, false);
        } else {
            for (int i = 0; i < fragmentManager.getBackStackEntryCount(); i++) {
                fragmentManager.popBackStack();
            }

            startRemote(remoteItem, true);
        }
    } else {
        startRemote(remoteItem, true);
    }

    DrawerLayout drawer = findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
}
 
源代码5 项目: Navigator   文件: NavigatorUtils.java
/**
 * @param tag             point to return
 * @param container       id container
 * @param fragmentManager variable contain fragment stack
 * @return true if is possible return to tag param
 */
public boolean canGoBackToSpecificPoint(String tag, int container, FragmentManager fragmentManager) {
    if (TextUtils.isEmpty(tag)) {
        return (fragmentManager.getBackStackEntryCount() > 1);
    } else {
        List<FragmentManager.BackStackEntry> fragmentList = fragmentList();
        Fragment fragment = fragmentManager.findFragmentById(container);
        if (fragment != null && tag.equalsIgnoreCase(fragment.getTag())) {
            return false;
        }
        for (int i = 0; i < fragmentList.size(); i++) {
            if (tag.equalsIgnoreCase(fragmentList.get(i).getName())) {
                return true;
            }
        }
        return false;
    }
}
 
源代码6 项目: FragmentBackHandler   文件: BackHandlerHelper.java
/**
 * 将back事件分发给 FragmentManager 中管理的子Fragment,如果该 FragmentManager 中的所有Fragment都
 * 没有处理back事件,则尝试 FragmentManager.popBackStack()
 *
 * @return 如果处理了back键则返回 <b>true</b>
 * @see #handleBackPress(Fragment)
 * @see #handleBackPress(FragmentActivity)
 */
public static boolean handleBackPress(FragmentManager fragmentManager) {
    List<Fragment> fragments = fragmentManager.getFragments();

    if (fragments == null) return false;

    for (int i = fragments.size() - 1; i >= 0; i--) {
        Fragment child = fragments.get(i);

        if (isFragmentBackHandled(child)) {
            return true;
        }
    }

    if (fragmentManager.getBackStackEntryCount() > 0) {
        fragmentManager.popBackStack();
        return true;
    }
    return false;
}
 
源代码7 项目: styT   文件: FragmentUtils.java
/**
 * 出栈所有fragment
 *
 * @param fragmentManager fragment管理器
 */
public static void popAllFragments(@NonNull final FragmentManager fragmentManager) {
    List<Fragment> fragments = getFragments(fragmentManager);
    if (fragments.isEmpty()) return;
    for (int i = fragments.size() - 1; i >= 0; --i) {
        Fragment fragment = fragments.get(i);
        if (fragment != null) popAllFragments(fragment.getChildFragmentManager());
    }
    while (fragmentManager.getBackStackEntryCount() > 0) {
        fragmentManager.popBackStackImmediate();
    }
}
 
源代码8 项目: AndroidTrainingCode   文件: DisplayActivity.java
@Override
public void onBackStackChanged() {
    
    // Gets the previous global stack count
    int previousStackCount = mPreviousStackCount;
    
    // Gets a FragmentManager instance
    FragmentManager localFragmentManager = getSupportFragmentManager();
    
    // Sets the current back stack count
    int currentStackCount = localFragmentManager.getBackStackEntryCount();
    
    // Re-sets the global stack count to be the current count
    mPreviousStackCount = currentStackCount;
    
    /*
     * If the current stack count is less than the previous, something was popped off the stack
     * probably because the user clicked Back.
     */
    boolean popping = currentStackCount < previousStackCount;
    Log.d(CLASS_TAG, "backstackchanged: popping = " + popping);
    
    // When going backwards in the back stack, turns off full screen mode.
    if (popping) {
        setFullScreen(false);
    }
}
 
源代码9 项目: bubble   文件: MainActivity.java
private boolean popFragment() {
    FragmentManager fragmentManager = getSupportFragmentManager();
    if (fragmentManager.getBackStackEntryCount() > 0) {
        fragmentManager.popBackStack();
        return true;
    }
    return false;
}
 
源代码10 项目: Silence   文件: ApplicationPreferencesActivity.java
@Override
public boolean onSupportNavigateUp() {
  FragmentManager fragmentManager = getSupportFragmentManager();
  if (fragmentManager.getBackStackEntryCount() > 0) {
    fragmentManager.popBackStack();
  } else {
    Intent intent = new Intent(this, ConversationListActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    finish();
  }
  return true;
}
 
源代码11 项目: product-catalogue-android   文件: MainActivity.java
private void clearBackstack() {
  FragmentManager fm = getSupportFragmentManager();

  if (fm.getBackStackEntryCount() > 0) {
    fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
  }
}
 
源代码12 项目: Wizard   文件: Wizard.java
public boolean navigatePrevious() {
  if (!activity.isFinishing()) {
    FragmentManager fragmentManager = activity.getSupportFragmentManager();
    if (fragmentManager.getBackStackEntryCount() > 0) {
      fragmentManager.popBackStackImmediate();
      fragmentManager.executePendingTransactions();
      return true;
    }
  }
  return false;
}
 
源代码13 项目: droidkaigi2016   文件: MainActivity.java
@Override
public void onBackPressed() {
    if (binding.drawer.isDrawerOpen(GravityCompat.START)) {
        binding.drawer.closeDrawer(GravityCompat.START);
        return;
    }
    FragmentManager fm = getSupportFragmentManager();
    if (fm.getBackStackEntryCount() > 0) {
        fm.popBackStack();
        return;
    }
    super.onBackPressed();
}
 
public BrowsingActivityNavigationControllerSinglePane(int oldPanNumbers, @NonNull FragmentManager fragmentManager, boolean fromRotation, BrowsingActivity browsingActivity, @NonNull BottomNavigationView bottomNavigationView, @NonNull BrowsingActivityControllerListener listener) {
    super(oldPanNumbers, fragmentManager, fromRotation, browsingActivity, bottomNavigationView, listener);
    paneNumber = 1;
    backStackChangedListener = () -> {
        if (fragmentManager.getBackStackEntryCount() == 0) {
            bottomNavigationView.setVisibility(View.VISIBLE);
            listener.setUpNavigation(false);
        } else {
            bottomNavigationView.setVisibility(View.GONE);
            listener.setUpNavigation(true);
        }
    };
    fragmentManager.addOnBackStackChangedListener(backStackChangedListener);
}
 
源代码15 项目: incubator-taverna-mobile   文件: ActivityUtils.java
public static void addFragmentToActivity(FragmentManager fragmentManager, Fragment fragment,
                                         int frameId) {

    for (int i = 0; i < fragmentManager.getBackStackEntryCount(); ++i) {
        fragmentManager.popBackStack();
    }
    FragmentTransaction transaction = fragmentManager.beginTransaction();
    transaction.replace(frameId, fragment);
    transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
    transaction.commit();
}
 
源代码16 项目: cube-sdk   文件: CubeFragmentActivity.java
public void popToRoot(Object data) {
    FragmentManager fm = getSupportFragmentManager();
    while (fm.getBackStackEntryCount() > 1) {
        fm.popBackStackImmediate();
    }
    popTopFragment(data);
}
 
源代码17 项目: cube-sdk   文件: CubeFragmentActivity.java
private boolean tryToUpdateCurrentAfterPop() {
    FragmentManager fm = getSupportFragmentManager();
    int cnt = fm.getBackStackEntryCount();
    if (cnt > 0) {
        String name = fm.getBackStackEntryAt(cnt - 1).getName();
        Fragment fragment = fm.findFragmentByTag(name);
        if (fragment != null && fragment instanceof CubeFragment) {
            mCurrentFragment = (CubeFragment) fragment;
        }
        return true;
    }
    return false;
}
 
源代码18 项目: Cangol-appcore   文件: DynamicActivity.java
@Override
public void onBackPressed() {
    FragmentManager fm = this.getSupportFragmentManager();
    if (fm.getBackStackEntryCount() > 1) {
        fm.popBackStack();
    } else {
        finish();
    }
}
 
源代码19 项目: styT   文件: FragmentUtils.java
/**
 * 出栈同级别fragment
 *
 * @param fragmentManager fragment管理器
 */
public static void popFragments(@NonNull final FragmentManager fragmentManager) {
    while (fragmentManager.getBackStackEntryCount() > 0) {
        fragmentManager.popBackStackImmediate();
    }
}
 
源代码20 项目: Android-UtilCode   文件: FragmentUtils.java
/**
 * 出栈同级别fragment
 *
 * @param fragmentManager fragment管理器
 */
public static void popFragments(@NonNull FragmentManager fragmentManager) {
    while (fragmentManager.getBackStackEntryCount() > 0) {
        fragmentManager.popBackStackImmediate();
    }
}