Explication détaillée de FragmentContainerView

FragmentContainerView est situé sous le package androidx.fragment.app et est une mise en page personnalisée spécialement conçue pour Fragment. Il étend FrameLayout, afin qu'il puisse gérer de manière fiable les transactions Fragment, et il a d'autres fonctions pour coordonner le comportement de Fragment. FragmentContainerView doit être utilisé comme conteneur de fragments, généralement défini dans la mise en page XML d'une activité, par exemple :

 <androidx.fragment.app.FragmentContainerView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/fragment_container_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
 </androidx.fragment.app.FragmentContainerView>
 

FragmentContainerView peut également ajouter un Fragment en utilisant l'attribut android:name . FragmentContainerView le fera une fois :

  • Créer une nouvelle instance de Fragment
  • 调用Fragment.onInflate(Context, AttributeSet, Bundle)
  • Effectuez une FragmentTransaction pour ajouter le fragment au FragmentManager approprié

Vous pouvez éventuellement inclure un android:tag qui vous permet de récupérer le fragment ajouté à l'aide de FragmentManager#findFragmentByTag(String).

 <androidx.fragment.app.FragmentContainerView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/fragment_container_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:name="com.example.MyFragment"
        android:tag="my_tag">
 </androidx.fragment.app.FragmentContainerView>
 

FragmentContainerView ne doit pas être utilisé en remplacement d'autres groupes de vues (FrameLayout, LinearLayout, etc.) en dehors des cas d'utilisation Fragment.

FragmentContainerView n'autorise que les vues renvoyées par Fragment.onCreateView(LayoutInflater, ViewGroup, Bundle). Les tentatives d'ajout d'autres vues entraîneront une exception IllegalStateException.

Pour les API supérieures à 17, FragmentContainerView désactive les animations et les transitions de mise en page. Sinon, l'animation doit être effectuée via FragmentTransaction.setCustomAnimations(int, int, int, int). Si animateLayoutChanges est défini sur true ou si setLayoutTransition(LayoutTransition) est appelé directement, UnsupportedOperationException sera levée.

Dans un FragmentContainerView, les fragments qui s'animent avec exit sont dessinés avant toutes les autres animations. Cela garantit que le fragment de sortie n'apparaît pas en haut de la vue.

Guess you like

Origin blog.csdn.net/challenge51all/article/details/116848243