如何以编程方式删除底层片段?

时间:2014-08-08 21:59:32

标签: android android-fragments back-stack fragmenttransaction

方案如下:

  1. "仪表板碎片" - >片段1.此事务被添加到后台堆栈。在将片段替换为" frag1";

  2. 时指定标记
  3. 片段1 - >片段2.此事务也添加到后台堆栈。在执行更换操作时使用标签。标签让我们说" frag2"。

  4. 现在在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.请让我知道这种方法有什么问题。谢谢。

1 个答案:

答案 0 :(得分:0)

试试这个

findViewById(R.id.fragment1).setVisibility(View.GONE);