方案如下:
"仪表板碎片" - >片段1.此事务被添加到后台堆栈。在将片段替换为" frag1";
片段1 - >片段2.此事务也添加到后台堆栈。在执行更换操作时使用标签。标签让我们说" frag2"。
现在在Frgment 2中,当用户想要保存数据时,它将进行Web服务调用。如果成功,我想用新片段1替换片段2.如果用户按下取消按钮,它将只执行背压事件并加载片段1。
在成功进行网络服务呼叫的情况下,更换已正确完成,但当我按下后退按钮时,仍然有OLDER Fragment 1.这是显而易见的原因。
要在Fragment 2中的Web服务调用成功时解除此问题,我已编写以下代码。
if (null != getActivity().getSupportFragmentManager().findFragmentByTag("frag1")) {
getActivity().getSupportFragmentManager().beginTransaction().remove
(getActivity().getSupportFragmentManager().findFragmentByTag("frag1"));
}
loadFragment1();
然后我使用回调方法在同一帧布局中加载片段1并替换片段2.
它位于if块内,但是旧片段" Fragment1"还在那里 - UNHARMED。 我没有在addToBackStack()方法中使用任何标记,并保持这样的addToBackStack(null)
我无法删除较旧的片段1.请让我知道这种方法有什么问题。谢谢。
答案 0 :(得分:0)
试试这个
findViewById(R.id.fragment1).setVisibility(View.GONE);