1. ホーム
  2. android

[解決済み] 現在のフラグメントオブジェクトを取得する

2022-04-20 16:02:41

質問

私の main.xml 私は

  <FrameLayout
        android:id="@+id/frameTitle"
        android:padding="5dp"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:background="@drawable/title_bg">
            <fragment
              android:name="com.fragment.TitleFragment"
              android:id="@+id/fragmentTag"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content" />

  </FrameLayout>

そして、フラグメントオブジェクトを次のように設定しています。

FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new FragmentType1();
fragmentTransaction.replace(R.id.frameTitle, casinodetailFragment, "fragmentTag");

// fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

異なるタイプのFragmentオブジェクトを設定している( FragmentType2,FragmentType3,... ) を異なる時間に実行します。さて、ある時点で、どのオブジェクトが現在そこにあるのかを特定する必要があります。

短い こんなことがしたいのですが。

Fragment currentFragment = //what is the way to get current fragment object in FrameLayout R.id.frameTitle

以下を試してみました。

TitleFragment titleFragmentById = (TitleFragment) fragmentManager.findFragmentById(R.id.frameTitle);

そして

    TitleFragment titleFragmentByTag = (TitleFragment) fragmentManager.findFragmentByTag("fragmentTag");

しかし 両方のオブジェクト (titleFragmentById と titleFragmentByTag ) は null

何か見逃した?

私が使っているのは Compatibility Package, r3 を開発し API level 7 .

findFragmentById()findFragmentByTag() を使用してフラグメントを設定した場合は動作します。 fragmentTransaction.replace または fragmentTransaction.add を使用しますが return null xml でオブジェクトを設定した場合 (例えば私の main.xml ). 私のXMLファイルに何かが欠けているようです。

解決方法は?

<ブロッククオート

さて、ある時点で、どのオブジェクトが現在そこにあるのかを特定する必要があります。

コール findFragmentById() オン FragmentManager の中にあるフラグメントを特定し、そのフラグメントがあなたの R.id.frameTitle のコンテナを使用します。

を使用している場合は androidxFragment - を使用します。 getSupportFragmentManager() の上に FragmentActivity / AppCompatActivity ではなく getFragmentManager()