0

現在のフラグメントを非表示にして、そのビューを破棄せず、これを使用して新しいフラグメントを表示したいコードがあります:

  FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.hide(oldFragment);
    ft.show(newFragment);
    ft.commit();

問題は、上記のコードを実行すると、UI コンポーネントが表示されないことです。

そうすればft.replace(id,fragment);機能しますが、フラグメントとそのビューを維持したいので、以前に表示されたフラグメントを削除したくないので、再初期化する必要はありません

4

2 に答える 2

1

以前にのビュー階層のnewFragment一部に追加しましたか? Activitya をインスタンス化しFragmentて表示するように指示しただけでは、どこに表示するかわかりません (それが a でない限りDialogFragment、私は推測します)。add(somelayoutid,fragment,"sometag")それぞれに使用する必要があり、必要に応じてFragmentそれらを非表示/表示できます。を非表示にしておく必要がない場合は、非表示/表示ではなく、常に置換を使用することもできますFragment

「sometag」は、回転を処理している場合に役立ちます。これにより、再作成Fragment後にそれぞれへの参照を取得Activityし、以前と同じように非表示/表示できます。

于 2013-11-06T15:22:50.757 に答える