同じviewIdでフラグメントAとBに対してadd()を呼び出し、次にそのviewIdでフラグメントCでreplace()を呼び出そうとすると、フラグメントAのみが削除され、フラグメントBとCになります。ドキュメントによると、 AとBの両方をCに置き換える必要があります...または、ドキュメントを間違って読んでいますか?
これを行う 1 つの組み合わせを次に示します。
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();
}
});
}
}