[英]Back Button Handling in SlidingDrawer for mulitple fragment?
我已经搜索了很多解决方案,但是找不到我想要的东西。我的应用程序中有一个滑动抽屉,现在抽屉中的选项是:
1. 家
2. 朋友
3. 团体等等
现在,对于每个选项,我都有很多片段。像家庭和朋友选项一样,片段就像
Home->fragment1->fragment2->fragment3
Friends->fragment4->fragment5
情况1:现在当我从首页转到frament1,然后转到frament2,再单击Friends,然后转到fragment4.Now,当我按“ Back Button
它也显示了Home
的片段。但是我想将“ Back
按钮限制为只显示它的选项片段,即当我在Friends
时,它不会使用“后退”按钮显示“ Home
的片段。 如何在滑动抽屉活动中执行此操作,以及在相应的片段中执行什么操作?
情况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);
和我从该片段转到另一个片段的操作。例如:在HomeFragment
,我做了另一个片段:
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = new FriendsStatusFragment();
fragmentManager.beginTransaction().replace(R.id.frame_container,fragment).commit();
在某些Fragment中,此方法很好用,但有时case 2
会出现问题,并且后退按钮无法按照case 1
提到的我的意愿进行操作。任何人都可以向我展示Path吗?
为确保在“朋友”中时不返回到Home中的片段,请在加载“朋友”片段(当您切换“选项”时)之前调用popBackStack
,以清除后堆栈中的所有片段。
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = new FriendsStatusFragment();
popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
fragmentManager.beginTransaction().replace(R.id.frame_container,fragment).commit();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.