我有MainActivity,它包含ListFragment和framelayout,我可以在项目点击时更改列表上的片段。
我在使用新Fragment1
替换现有Fragment2
时遇到问题,按下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
将它换成新片段并将其添加到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;
}