4

如果我为具有相同 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();
            }
        });
    }
}
4

1 回答 1

0

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

于 2012-04-08T20:11:47.983 回答