Android关闭所有片段onBackPressed

Rad*_*dwa 3 android android-fragments

我有一个活动,每个片段中有大约10个片段,有一个带有ProgressDialog的AsyncTask我需要离开以关闭所有片段当我点击后按钮它关闭但是ProgressDialog仍然可见,特别是当我在片段之间传输时,这是我使用的代码

 @Override
    public void onBackPressed() {
      if(fragmentManager!=null){
            for(int i = 0; i < fragmentManager.getBackStackEntryCount(); ++i) {
                fragmentManager.popBackStack();
            }}
                                 }
Run Code Online (Sandbox Code Playgroud)

当我调试时,我发现它为我按下后退按钮时打开的每个片段进入onCreateView,尽管我使用transaction.replace方法在片段之间进行传输.

Far*_*med 8

我正在通过以下方法清除堆栈.

  public void popBackStackTillEntry(int entryIndex) {

    if (getSupportFragmentManager() == null) {
        return;
    }
    if (getSupportFragmentManager().getBackStackEntryCount() <= entryIndex) {
        return;
    }
    FragmentManager.BackStackEntry entry = getSupportFragmentManager().getBackStackEntryAt(
            entryIndex);
    if (entry != null) {
        Utilities.sDisableFragmentAnimations = true;
        getSupportFragmentManager().popBackStackImmediate(entry.getId(),
                FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }


}
Run Code Online (Sandbox Code Playgroud)

清除1表示将从堆栈中删除所有片段,并且只有单个片段将保留在堆栈中.

用法popBackStackTillEntry(1);

  • 非常感谢popBackStackTillEntry(0) (3认同)