请帮我片段

时间:2014-11-03 08:24:07

标签: android

我有一个带有framelayout的Activity,其中加载了片段。 有一个带有列表的侧栏的活动。

  1. open fragment1
  2. open fragment2
  3. open fragment3
  4. 如果我点击"打开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();
        }
    

2 个答案:

答案 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);