片段替换现有片段

时间:2012-09-01 11:39:42

标签: android

我有MainActivity,它包含ListFragment和framelayout,我可以在项目点击时更改列表上的片段。

我在使用新Fragment1替换现有Fragment2时遇到问题,按下Fragment1按钮,Fragment2应替换Fragment1,以及应该在左边有相同的ListFragment,并且应该正确处理后退按钮,这意味着当我在Fragment2并按回按钮时它应该显示相同的ListFragment和Fragment1。

1 个答案:

答案 0 :(得分:7)

您需要使用.replace来切换这两个片段,您还需要添加将原始文件添加到Backstack以便您可以调用它,并且您需要覆盖后退键操作以此方式运行。它看起来像这样(使用我的一个项目的代码,使用支持库):

显示您的第一个片段:

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

将它换成新片段并将其添加到backstack:

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