1. ホーム
  2. android

[解決済み] フラグメントは置き換えられるのではなく、前のフラグメントの上に置かれます。

2022-11-23 08:42:49

質問

アクティビティです。

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

Fragment1 fragment = new Fragment1();
Fragment2 fragment2 = new Fragment2();

transaction.replace(R.id.Fragment1, fragment);
transaction.addToBackStack(null);
transaction.commit();

FragmentTransaction transaction2 = getSupportFragmentManager().beginTransaction();
transaction2.replace(R.id.Fragment1, fragment2);
transaction2.addToBackStack(null);
transaction2.commit();

ビューの中のコード

<fragment
    android:id="@+id/Fragment1"
    android:name="com.landa.fragment.Fragment1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/include1" /> 

問題は、コンテンツが本当に置き換えられるわけではなく、上に置かれる(だから重なる)ことです。

クリックで戻ると、最初の断片が (2番目の断片なしで) 適切に表示されますが、最初は両方が表示されています (最後の断片だけを表示させたいのです)。

私はここで何を見逃しているのでしょうか?

どのように解決するのですか?

あなたはここで2つのことを間違えています。

  1. の中に静的に配置されたフラグメントを置き換えることはできません。 xml レイアウトファイルに静的に配置されたフラグメントを置き換えることはできません。コンテナ(例えば FrameLayout ) を作成し、フラグメントをプログラムで追加するには FragmentTransaction .

  2. FragmentTransaction.replace は、第1引数にフラグメントのIDではなく、フラグメントを含むコンテナのIDを期待します。そのため、最初の引数には、最初のフラグメントを追加したコンテナの ID を渡す必要があります。

を参照することができます。 このリンク をご覧ください。