2012-09-01 456 views
0

我有MainActivity,它包含ListFragment和framelayout,我可以更改項目單擊列表上的片段。片段替換現有片段

我有一個問題,用新的Fragment2替換現有Fragment1,對Fragment1按一下按鈕,Fragment2應更換Fragment1,並應有在左邊相同的ListFragment,和後退按鈕應妥善處理,這意味着當我在Fragment2並按下後退按鈕它應該顯示相同的ListFragment和Fragment1。

+0

顯示您的代碼,所以我們知道你到目前爲止嘗試過什麼 –

回答

7

您需要使用.replace來切換這兩個片段,您還需要添加原件到backstack中,以便您可以調用它,並且您需要覆蓋後退鍵操作以實現這種功能。它看起來像這樣(從我的一個項目使用的代碼,使用支持庫):

要顯示你的第一個片段:

menu = new MenuFragment_Main(); // instantiate fragment 
getSupportFragmentManager().beginTransaction().replace(R.id.pane, menu).commit(); // display fragment 

要交換它爲新的片段,並將其添加到堆棧中:

ListFragment_ShopListItem shoplist = new ListFragment_ShopListItem(); // instantiate fragment 
getSupportFragmentManager().beginTransaction().replace(R.id.pane, shoplist).addToBackStack(null).commit(); // replace original fragment with new fragment, add original to backstack 

並覆蓋返回鍵返回到前一個片段:

public void onBackPressed() { 
    FragmentManager fm = getActivity().getSupportFragmentManager(); 
    fm.popBackStack(); 
    return; 
} 
+0

謝謝@Barak。它對我來說工作得很好........ – Balaji