我有一个带有framelayout的Activity,其中加载了片段。 有一个带有列表的侧栏的活动。
如果我点击"打开fragment1" fragment1打开,其中只列出。 如果我点击"打开fragment2"或"打开片段3"打开其中任何信息的fragment2或fragment3。
如果我点击fragment1,列表中的项目会打开另一个片段,例如" someFragment"和back1中的fragment1。
现在,如果我打开侧面菜单,并尝试打开或片段2片段3,它将打开。但是当点击"返回"然后someFragment fragment1重叠。
//open fragment1 click
Fragment fragment1 = new Fragment1 ();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment1).commit();
//open fragment2 click
Fragment fragment2 = new Fragment2 ();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment2 ).commit();
//open fragment3 click
EmployeessList fragment3 = new fragment3 (getString(R.string.employee_list_link));
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment3 ).commit();
我需要在新片段的开头处进行纯化后台堆叠
Fragment1中的
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
FragmentTransaction fTrans = getFragmentManager().beginTransaction();
Fragment someFragment= new SomeFragment();
fTrans.replace(R.id.content_frame, someFragment);
fTrans.addToBackStack(null);
fTrans.commit();
}
答案 0 :(得分:0)
在提交从侧边菜单调用的事务之前 - 添加以下代码:
if (fragmentManager.getBackStackEntryCount() > 0) {
fragmentManager.popBackStack(fragmentManager.getBackStackEntryAt(0).getId(),
FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
这将清除您当前的后台堆。
答案 1 :(得分:0)
使用add添加替换:
fTrans.add(R.id.content_frame, someFragment);