4

同じ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();
            }
        });
    }
}
4

1 に答える 1

0

ドキュメントを見ると、.replace はフラグメントをパラメーターとして受け取るメソッドを呼び出します。したがって、1 つのフラグメントのみを置き換えることを意図していると思います。そもそもなぜ 2 つのフラグメントを同じ ID に追加するのか、よくわかりません。

于 2012-04-08T20:11:47.983 に答える