滑动抽屉中的后退按钮处理多个片段?

Back Button Handling in SlidingDrawer for mulitple fragment?

我已经多次搜索这个解决方案,但找不到我 want.I 在我的 app.Now 中有一个滑动抽屉,抽屉中的选项是:

1.首页
2.朋友
3.群组 以及更多

现在对于每个选项我有很多 fragments.Like HomeFriends 选项片段就像
Home->fragment1->fragment2->fragment3
Friends->fragment4->fragment5

案例 1: 现在,当我从 Home 转到 frament1,然后转到 frament2,然后再次单击 Friends,然后在按 Back Button 时转到 fragment4.Now,它也显示Home 的片段。但是我想限制 Back 按钮只显示它的选项片段,即当我在 Friends.在slidingdrawer中如何做activity以及在相应的fragments中如何做??

案例 2: 我在我的应用程序中看到的是,当我按下后退按钮时,有时我可以看到我的片段覆盖在另一个片段上,即我可以看到两个片段混在一起。为什么它没有完全替换片段??

现在我在我的SlidingDrawer中实现了什么:

Fragment fragment = new HomeFragment(); // i have this initialized previously for every item of listview
FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.frame_container, fragment).commit();
        fragmentManager.beginTransaction().addToBackStack(null);


以及我从这个 fragment.For 示例转到另一个片段所做的工作:在 HomeFragment 转到我做的另一个片段:

FragmentManager fragmentManager = getFragmentManager();
                Fragment fragment = new FriendsStatusFragment();
                fragmentManager.beginTransaction().replace(R.id.frame_container,fragment).commit();


在某些片段中,这很好用,但有时会出现 case 2 的问题,并且后退按钮无法根据我在 case 1 中提到的愿望工作。任何人都可以告诉我路径吗??提前致谢...

为确保您在朋友中时不会 return 到主页中的片段,请在加载朋友片段(当您切换选项时)之前调用 popBackStack 以清除所有返回堆栈中的片段。

FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = new FriendsStatusFragment();
popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
fragmentManager.beginTransaction().replace(R.id.frame_container,fragment).commit();