我有 MainActivity,它包含 ListFragment 和 framelayout,我可以在单击项目时更改列表中的片段。
我有一个问题,Fragment1用新的Fragment2,在按钮单击时替换现有的Fragment1,Fragment2应该替换Fragment1,并且应该在左侧具有相同的 ListFragment,并且应该正确处理后退按钮,这意味着当我进入Fragment2并按下后退按钮时它应该显示相同的 ListFragment 和 Fragment1。
我有 MainActivity,它包含 ListFragment 和 framelayout,我可以在单击项目时更改列表中的片段。
我有一个问题,Fragment1用新的Fragment2,在按钮单击时替换现有的Fragment1,Fragment2应该替换Fragment1,并且应该在左侧具有相同的 ListFragment,并且应该正确处理后退按钮,这意味着当我进入Fragment2并按下后退按钮时它应该显示相同的 ListFragment 和 Fragment1。
您需要使用.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;
}