W moim main.xmlmam
<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, r3i rozwijam się dla API level 7.
findFragmentById()i findFragmentByTag()będzie działać, jeśli ustawiliśmy fragment za pomocą fragmentTransaction.replacelub fragmentTransaction.add, ale będzie, return nulljeś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.