2017-01-09 112 views
0

我有在每個片段約10個片段的活動有一個與ProgressDialog一個的AsyncTask我需要離開,關閉所有片段,當我點擊後退按鈕 它關閉,但ProgressDialog仍可見特別是當我之間傳遞這裏片段 是代碼我使用的Android關閉所有片段onBackPressed

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

還當我調試我發現,它進入onCreateView每個當我按下後退按鈕雖然我使用transaction.replace方法片段之間傳送I打開片段。

+0

嘗試在轉換碎片時刪除'addToBackStack'。 –

+0

它不適用於我 – Radwa

回答

1

我正在通過以下方法清除堆棧。

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); 
    } 


} 

清除高達1意味着所有片段將從棧和僅單一片段被去除將留在堆棧。

用法 popBackStackTillEntry(1);

+1

感謝與popBackStackTillEntry(0)很多工作, – Radwa