滑动抽屉中的后退按钮处理多个片段?
Back Button Handling in SlidingDrawer for mulitple fragment?
我已经多次搜索这个解决方案,但找不到我 want.I 在我的 app.Now 中有一个滑动抽屉,抽屉中的选项是:
1.首页
2.朋友
3.群组 以及更多
现在对于每个选项我有很多 fragments.Like Home 和 Friends 选项片段就像
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();
我已经多次搜索这个解决方案,但找不到我 want.I 在我的 app.Now 中有一个滑动抽屉,抽屉中的选项是:
1.首页
2.朋友
3.群组 以及更多
现在对于每个选项我有很多 fragments.Like Home 和 Friends 选项片段就像 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();