私の中に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.replace
fragmentTransaction.add
return null
main.xml
ベストアンサー1
今、ある時点で、どのオブジェクトが現在そこにあるかを特定する必要があります
findFragmentById()
を呼び出してFragmentManager
、コンテナ内にあるフラグメントを特定しますR.id.frameTitle
。
androidx
のエディションを使用している場合はFragment
(最近のアプリではそうすべきですが)、/の代わりgetSupportFragmentManager()
に を使用してください。FragmentActivity
AppCompatActivity
getFragmentManager()