0

線形レイアウトとフラグメント プレースホルダーを含むアクティビティがあります。

<RelativeLayout >

    <LinearLayout/>

    <fragment />

</RelativeLayout>

アクティビティの onCreate() では、フラグメント プレースホルダーにフラグメントを配置し、線形レイアウトに複数のフラグメントを配置します。これは、電話の設定が変更されるまでは正常に機能します (向きの変更など)。

オリエンテーションや構成の変更について、特別なことは何もしません。何が起こるかは本当に奇妙です: フラグメントのプレースホルダーは正しく設定されていますが、線形レイアウトには重複するフラグメントが含まれています。つまり、以前に線形レイアウトにfragment1とがあった場合は、 が表示されます。ここで何が起こっているのですか?fragment2fragment1 fragment2 fragment1 fragment2

追記: リフレクションを使用してフラグメント オブジェクトを作成していますが、それで何かが変わるとは思いません。

4

1 に答える 1

0

向きが変更されると、フレームワークはフラグメントをビューに自動的に追加します。paramBundle が null の場合にのみ、フラグメント追加トランザクションを実行します。

例 (サポート ライブラリを使用):

@Override
public void onCreate(Bundle paramBundle) {
    super.onCreate(paramBundle);
    if (paramBundle == null) {
        FragmentManager localFragmentManager = getSupportFragmentManager();
        FragmentTransaction localFragmentTransaction = localFragmentManager
                .beginTransaction();
        localFragmentTransaction.add(R.id.fragmentHost,
                new MyFragment(), MY_FRAGMENT_TAG);
        localFragmentTransaction.commit();
    }
}
于 2012-05-07T20:28:08.273 に答える