W moim main.xml
mam
<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>
I ustawiam obiekt fragmentu w ten sposób
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new FragmentType1();
fragmentTransaction.replace(R.id.frameTitle, casinodetailFragment, "fragmentTag");
// fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Ustawia różne typy obiektów Fragment ( FragmentType2,FragmentType3,...
) w różnym czasie. Teraz w pewnym momencie muszę zidentyfikować, który obiekt obecnie się tam znajduje.
W skrócie muszę zrobić coś takiego:
Fragment currentFragment = //what is the way to get current fragment object in FrameLayout R.id.frameTitle
Wypróbowałem następujące
TitleFragment titleFragmentById = (TitleFragment) fragmentManager.findFragmentById(R.id.frameTitle);
i
TitleFragment titleFragmentByTag = (TitleFragment) fragmentManager.findFragmentByTag("fragmentTag");
Ale oba obiekty (titleFragmentById i titleFragmentByTag) są.null
Czy coś mi umknęło?
Używam Compatibility Package, r3
i rozwijam się dla API level 7
.
findFragmentById()
i findFragmentByTag()
będzie działać, jeśli ustawiliśmy fragment za pomocą fragmentTransaction.replace
lub fragmentTransaction.add
, ale będzie, return null
jeśli ustawiliśmy obiekt na xml (tak jak to, co zrobiłem w moim main.xml
). Myślę, że brakuje mi czegoś w moich plikach XML.