Dans mon main.xml
j'ai
<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>
Et je mets un objet fragment comme celui-ci
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new FragmentType1();
fragmentTransaction.replace(R.id.frameTitle, casinodetailFragment, "fragmentTag");
// fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Il définit différents types d'objets Fragment ( FragmentType2,FragmentType3,...
) à des moments différents. Maintenant, à un moment donné, j'ai besoin d'identifier quel objet est actuellement là.
En bref, je dois faire quelque chose comme ça:
Fragment currentFragment = //what is the way to get current fragment object in FrameLayout R.id.frameTitle
J'ai essayé ce qui suit
TitleFragment titleFragmentById = (TitleFragment) fragmentManager.findFragmentById(R.id.frameTitle);
et
TitleFragment titleFragmentByTag = (TitleFragment) fragmentManager.findFragmentByTag("fragmentTag");
Mais les deux objets (titleFragmentById et titleFragmentByTag) sont.null
Ai-je manqué quelque chose?
J'utilise et je Compatibility Package, r3
développe pour API level 7
.
findFragmentById()
et findFragmentByTag()
fonctionnera si nous avons défini le fragment en utilisant fragmentTransaction.replace
ou fragmentTransaction.add
, mais le fera return null
si nous avons défini l'objet en xml (comme ce que j'ai fait dans my main.xml
). Je pense qu'il me manque quelque chose dans mes fichiers XML.