Ajout des fragments statiquement dans le fichier de mise en page
Pour utiliser votre nouveau fragment, vous pouvez statiquement ajouter à une mise en page XML. Dans ce cas, l'attribut android: name pointe vers la classe correspondante, comme le montre l'extrait de code suivant.
<fragment
android:id="@+id/listFragment"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
class="com.example.android.rssreader.MyListFragment" ></fragment>
<fragment
android:id="@+id/detailFragment"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="match_parent"
class="com.example.android.rssreader.DetailFragment" >
</fragment>
L'utilisation de ce scénario est logique dans le cas où vous avez différents fichiers de mise en page statique pour différentes configurations de l'appareil.
dynamique de manutention en fragments
La classe qui peut être l'accès à l'activité via la méthode getFragmentManager()
vous permet d'ajouter, de supprimer et de remplacer des fragments dans la mise en page de votre activité. Les modifications doivent être effectuées dans une transaction via la classe FragmentTransaction
.
Pour modifier les fragments d'une activité, vous définissez généralement un espace réservé FrameLayout
dans le fichier de disposition.
<FrameLayout
android:id="@+id/listcontainer"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/detailscontainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
Vous utilisez le FragmentManager pour remplacer le récipient avec un fragment.
// get fragment manager
FragmentManager fm = getFragmentManager();
// add
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.your_placehodler, new YourFragment());
// alternatively add it with a tag
// trx.add(R.id.your_placehodler, new YourFragment(), "detail");
ft.commit();
// replace
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.your_placehodler, new YourFragment());
ft.commit();
// remove
Fragment fragment = fm.findFragmentById(R.id.your_placehodler);
FragmentTransaction ft = fm.beginTransaction();
ft.remove(fragment);
ft.commit();
Un nouveau fragment remplace un fragment existant dans ce conteneur.
Si vous souhaitez ajouter la transaction au backstack d'Android, utilisez la méthode addToBackStack()
. Cela ajoutera l'action à la pile d'historique de l'activité, c'est-à-dire, cela permettra de rétablir les changements de fragment via le bouton de retour.
les deux ont même Id .... ?? – koutuk
Je fais un commentaire à la fois, c'est juste pour montrer le code. –
utiliser id différent ... pour le même type de balises ' – koutuk