【问题标题】:Fragment replace() not replacing all fragments片段替换()不替换所有片段
【发布时间】:2012-04-21 09:06:12
【问题描述】:

如果我为具有相同 viewId 的片段 A 和 B 调用 add(),然后尝试使用片段 C 在该 viewId 上调用 replace(),则只有片段 A 被删除,最终得到片段 B 和 C。根据文档,A 和 B 都应该被 C 替换...还是我读错了文档?

这里有一个组合可以做到这一点:

public class FragmentActivity extends SherlockFragmentActivity {
    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        getSupportFragmentManager().beginTransaction().add(R.id.fragment, new FragmentA()).add(R.id.fragment, new FragmentB()).commit();

        ((Button) findViewById(R.id.swap)).setOnClickListener(new View.OnClickListener() {          
            @Override
            public void onClick(final View view) {
                getSupportFragmentManager().beginTransaction().replace(R.id.fragment, new FragmentC()).commit();
            }
        });
    }
}

【问题讨论】:

  • 谢谢,刚刚添加了一个sn-p。

标签: android replace add fragment


【解决方案1】:

查看文档,.replace 调用了一个将片段作为参数的方法。所以我猜它只是为了替换一个片段。我真的不明白你为什么要首先将两个片段添加到同一个 id。

【讨论】:

  • 我正在阅读 replace() 的文章,上面写着:这与调用 remove(Fragment) 基本相同 对于所有当前添加的使用相同 containerViewId 添加的片段/b> 然后使用此处给出的相同参数添加(int,Fragment,String)。
  • 抱歉,我确实错过了这一点,并且我误解了类定义。一目了然。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多