0

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

我有一个问题,Fragment1用新的Fragment2,在按钮单击时替换现有的Fragment1Fragment2应该替换Fragment1,并且应该在左侧具有相同的 ListFragment,并且应该正确处理后退按钮,这意味着当我进入Fragment2并按下后退按钮时它应该显示相同的 ListFragment 和 Fragment1。

4

1 回答 1

8

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

要显示您的第一个片段:

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;
}
于 2012-09-01T12:09:11.817 回答