【发布时间】:2016-07-30 13:06:07
【问题描述】:
我对 Fragment 很陌生,我正在尝试在这里实现某种类型的目标。
考虑这种情况:我有三个片段 F1、F2 和 F3。现在,当我从 F1 移动到 F2 时,没有问题。现在的问题是,F2 中有一个按钮,单击该按钮时,会将 F2 替换为 F3。这意味着,F3 应该“取代”F2 而不会在后台创建新项目。这背后的目的是,当用户在 F2 或 F3 时按下后退按钮时,它应该重定向回 F1。
我想我可以做到,但是按下后退按钮时会出现各种混乱。再一次,我想要的是,当 F2 或 F3 中的任何一个处于活动状态时,后退按钮应将我带回 F1。
我用来从 F1 转到 F2 的代码是:
FragmentManager fm = getFragmentManager();
Fragment fr = new FragmentTwo();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.add(R.id.fragment_container, fr);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
我用来将 F2 替换为 F3 的代码是:
FragmentManager fm = getFragmentManager();
Fragment fr = new FragmentThree();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fr);
fragmentTransaction.commit();
我用来将 F3 替换为 F2 的代码是:
FragmentManager fm = getFragmentManager();
Fragment fr = new FragmentTwo();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fr);
fragmentTransaction.commit();
任何建议和提示将不胜感激。
编辑: 我已经在这里上传了我的项目的源代码:
问候
【问题讨论】:
-
I think I can do that however all sort of mess arises when pressing the back button。什么乱七八糟的?? -
@VivekMishra :嗯,我可以毫无问题地从 F1 到 F2 再回到 F1。但是当我从 F1 转到 F2 然后用 F3 切换 F2 并尝试返回按钮时,它不会恢复到 F1。相反,它停留在 F3。现在,如果我再次按下后退按钮,应用程序将关闭。所以基本上当我尝试从 F2 切换到 F3 时问题就开始了。不知何故,后台被搞砸了或其他什么..
-
请查看原始帖子以获取指向我的项目的链接。时长
-
使用 fragmentTransaction.addToBackStack(null);何时替换 F2 和 F3 之间的片段可能有用。
-
^ 我试过了。没用。如果你从逻辑上思考,它不应该工作。假设我在 F2 和 F3 之间切换了十次。那么如果有addToBackStack的话,就会有十个在两个fragment之间切换的入口,按下后退按钮只会将这些入口一一回滚。换句话说,要进入 F1,我必须继续点击十次。
标签: android android-fragments navigation fragment