0

断片で面白いものを見つけました。アクティビティを作成し、2つのフラグメントを追加しました。

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.main, new Fragment1());
ft.add(R.id.main, new Fragment2());
ft.commit();

次に、コード付きのボタンを追加しました。

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.main, new Fragment1());
ft.commit();

最初に押すと-Fragment1が破壊され、2回目に押すと-Fragment2が破壊されます。なぜそれがうまくいくのですか?フラグメントを置き換える場合は、コンテナ「メイン」をクリーンアップする必要があると思います。

4

4 に答える 4

1

ドキュメントを見てみましょう

「これは、同じ containerViewId で追加された現在追加されているすべてのフラグメントに対して remove(Fragment) を呼び出してから、ここで指定された同じ引数で add(int, Fragment, String) を呼び出すことと本質的に同じです。」

于 2013-12-12T10:59:14.517 に答える
0

フラグメント f1 と f2 を仮定すると、f1 の f2 フラグメントを置き換えた場合、f1 フラグメント onpause ondestroyview ondestroy ondetach

および f2 oncreate oncreateview onactivitycreated onstart onresume

と呼ばれる

f1 に f2 を追加すると、f1 onpause と f2 oncreate oncreateview onactivitycreated onstart onresume

呼ばれる

于 2014-09-18T10:32:59.290 に答える
0

置換後に addToBackStack(null) を使用してみてください。

ft.replace(R.id.main, new Fragment1());
ft.addToBackStack(null)
ft.commit();
于 2012-10-23T17:50:06.287 に答える