2017-03-03 65 views
1

假設我們有一個活動託管在我們的後棧三個片段在後面堆棧中刪除多個片段

A-> B-> C^

當我點擊的片段回按CI也想立刻從後面的堆棧中刪除B.注意在某些情況下,我可能想回到B,但大多數情況下,我想一起清除C和B以獲取A.如果我可以調用popBackStack()兩次,還是應該有某種委託機制通知B C已關閉,我們不期望顯示B,請清理。

回答

1

在碎片中的做..

getSupportFragmentManager().beginTransaction() 
       .add(R.id.containerMain, new FragmentA()).addToBackStack("BACKSTACK_FRAGMENT_A") 
       .commit(); 

在這種情況下不使用addToBackStack(..) 你永遠回片段A當您按下從其他片段回來。 以及什麼時候要指定回壓到特定片段

將片段添加到BackStack。前提交()的交易,使用addToBackStack()方法,即

addToBackStack("Some String").commit(); 

和onBackPressed()

@Override 
public void onBackPressed() { 
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) { 
     getSupportFragmentManager().popBackStack(); 
    } else { 
     this.finish(); 
    } 
}