繁体   English   中英

在SlidingDrawer中使用后退按钮处理多个片段吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM