現在のフラグメントオブジェクトを取得する 質問する

現在のフラグメントオブジェクトを取得する 質問する

私の中に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();

異なる時間に異なるタイプのフラグメント オブジェクト ( ) を設定しています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()を使用してフラグメントを設定した場合は機能しますが、でオブジェクトを設定した場合は機能します ( で行ったように)。 XML ファイルに何かが欠けていると思います。fragmentTransaction.replacefragmentTransaction.addreturn nullmain.xml

ベストアンサー1

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

findFragmentById()を呼び出してFragmentManager、コンテナ内にあるフラグメントを特定しますR.id.frameTitle

androidxのエディションを使用している場合はFragment(最近のアプリではそうすべきですが)、/の代わりgetSupportFragmentManager()に を使用してください。FragmentActivityAppCompatActivitygetFragmentManager()

おすすめ記事