2015-06-21 50 views
0

我有一個3片段的活動。第一個片段不會添加到後臺堆棧中。所以,我的導航是:在活動中跳過片段?

A - >乙 - > C,或 A - >ç

我實現onNavigateUp從堆棧中取出碎片和它的作品。

我還在操作欄上有一個按鈕,它清除碎片中的信息並切換到第一個碎片。

如果我在第三個片段中,然後單擊該按鈕轉到第一個片段,將片段替換爲足以從後臺堆棧中刪除第二個和第三個片段,或者我也應該調用getFragmentManager().popBackStack()

編輯

我加入這個代碼移回第一個片段:

getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
switchFragment(fragmentA, false); 

fragmentA.clear(); 

而且所有switchFragment所做的是:

protected void switchFragment(Fragment fragment, boolean addToBackStack) { 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.replace(R.id.container_fragments, fragment, fragment.getClass().getSimpleName()); 

    if (addToBackStack) { 
     ft.addToBackStack(fragment.getClass().getSimpleName()); 
    } 

    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
    ft.commit(); 

    currentFragment = fragment; 
} 

然而,即使fragmentA.clear()被稱爲,textviews不清除。

是否因爲片段仍然創建?

回答

0

Basicaly來說,當你調用由FragmentTransaction替換默認AndroidOS只會

刪除現有的片段。如果將其添加到容器,則其視圖 也會從該容器中移除。

here

,不會pushpop什麼/從BackStack。所以,如果你是

第三片段

,然後點擊按鈕進入到第一

如果您曾呼籲addToBackStack()之前,那麼你應該叫popBackStack()過,如果你不叫addToBackStack()之前您無需撥打popBackStack()即可清除BackStack