【发布时间】:2015-01-12 08:46:51
【问题描述】:
我在 xml 文件中有一个主容器,我将根据按钮点击来替换片段。
当 Activity 打开时,我使用以下代码将 fragment1 添加到主容器
fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.container, homeMainFragment);
fragmentTransaction.commit();
在 HomeMainFragment 中单击一个按钮执行以下操作。
Fragment2 fragment2 = new Fragment2 ();
fragmentTranasaction.replace(R.id.container, fragment2);
fragmentTranasaction.addToBackStack(null);
fragmentTranasaction.commit();
在 Fragment2 中单击另一个按钮移动到 Fragment3,使用以下代码。
FragmentTransaction transaction = fragmentManager.beginTransaction();
Fragment3 fragment3 = new Fragment3 ();
transaction.replace(R.id.container, fragment3 );
transaction.commit();
现在当我点击返回时,我的 UI 应该显示 HomeFragment,而不是显示 home 以及 fragment3 合并在一起。
只是想明确我的要求。
1.当我查看 fragment3 并单击返回时,我实际上应该看到 homefragment 而不是 fragment2。
2.我没有将fragment3添加到后台堆栈,因为fragment3中的一个按钮再次启动fragment2,它将启动fragment3。 (使用上面显示的相同代码)在这种情况下,如果我单击返回,我可以看到我不需要的 fragment3 的多个实例。请帮忙解决这个问题。
编辑2:
这些是我的观察。
在第 1 步中:容器有 homefragment.xml
在第 2 步中:将容器替换为 fragment1..xml
在第 3 步中:将容器替换为 fragment3.xml
当我单击后容器时,正在添加具有透明背景的 homefragment,这就是为什么片段 3.仍然可见。
当用户点击返回时,有什么办法可以删除backstack并单独添加homefragment?
【问题讨论】:
-
developer.android.com/training/implementing-navigation/… 将此“.addToBackStack()”添加到第三个片段事务中。
-
嗨 Jeeri,您的问题解决了吗?
-
我会在@Vivek 工作后通知您!