0% ont trouvé ce document utile (0 vote)
140 vues9 pages

Introduction aux Fragments Android

Le document décrit les fragments en Android, y compris leur définition, leur cycle de vie et les méthodes pour les ajouter à une activité de manière statique ou dynamique.

Transféré par

Yasmine Chihab
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
140 vues9 pages

Introduction aux Fragments Android

Le document décrit les fragments en Android, y compris leur définition, leur cycle de vie et les méthodes pour les ajouter à une activité de manière statique ou dynamique.

Transféré par

Yasmine Chihab
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

06/02/2021 06/02/2021

Modularité
 Les fragments introduisent la modularité et la réutilisabilité.

Introduction au fragment  les fragments sont mieux adaptés pour définir et gérer
l'interface utilisateur d'un seul écran ou d'une partie d'écran.
 Les activités sont un endroit idéal pour placer des éléments
ZEMALI Elamine globaux autour de l'interface utilisateur de votre application,
comme barre de navigation
 Exemple: une application qui répond à différentes tailles
d'écran.

Comprendre le paradigme de
conception des fragments Modularité
 Qu'est ce qu'un fragment ?
 Une partie de l’interface utilisateur modulaire et flexible.
 Introduits en premier dans l'API Android 3.0 (Honeycomb).
 Les fragments sont gérés par une activité.
 Il peut y avoir plus d'un fragment dans une activité.
 le fragment définit sa propre disposition de vue.
Activity A Activity A

Activity B

1 2
06/02/2021 06/02/2021

CYCLE DE LA VIE Ajouter des fragments


 Tout comme les activités, les fragments ont également un cycle de vie:  Il existe deux méthodes :
 Attachez- vous à l'activité - onAttach (Activity)  Statique : via XML
 Créer un fragment - onCreate (Bundle)  Dynamique : via FragmentManager
 Créer une vue - onCreateView (LayoutInflater,ViewGroup, Bundle)
 Création d'activité - onActivityCreated (Bundle)
 Etat de la vue restauré - onViewStateRestored (Bundle)
 Rendre visible à l'utilisateur - onStart ()
 début de l'interaction utilisateur - onResume ()
 pause de l'interaction de l'utilisateur - onPause ()
 Rendu invisible à l'utilisateur - onStop ()
 Destruction de vue - onDestroyView ()
 Détruire le fragment - onDestroy ()
 Se détacher d'une activité - onDetach ()

Sous-classes de fragment Méthode Statique


 DialogFragment - Pour afficher la boîte de dialogue  Les étapes :
flottante  Configurez votre environnement

 PreferenceFragment - Utile pour créer une activité  Définir la disposition des éléments graphiques dans fichier XML
propre au fragment.
de paramètres
 Ajouter la balise fragment dans l'activité pour réserver sa place
dans l’affichage.
 Créer une classe qui correspond au fragment, la classe herite de
la classe fragment.
 Surchargé la méthode onCreateView. Pour faire la liaison avec le
fichier XML.

3 4
06/02/2021 06/02/2021

Méthode Statique Méthode Statique


• Configurez votre environnement  Ajouter la balise FragmentContainerView dans l'activité:
 Fichier: build.gradle  Fichier: activity_main.xml

buildscript {
repositories { <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
google() }} android:layout_width="fill_parent"
android:layout_height="fill_parent" >
allprojects {
repositories { <androidx.fragment.app.FragmentContainerView
google()}} xmlns:android="http://schemas.android.com/apk/res/android"
dependencies { android:id="@+id/fragment_container_view"
def fragment_version = "1.2.5" android:layout_width="match_parent"
implementation "androidx.fragment:fragment:$fragment_version" android:layout_height="match_parent"
} android:name="com.example.ExampleFragment" />

</LinearLayout>

Méthode Statique Méthode Statique


 Définir la disposition des éléments :  Créer une classe qui correspond au fragment:
 Fichier: ExampleFragment.xml  Fichier: ExampleFragment.java

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" class ExampleFragment extends Fragment {
android:layout_width="match_parent" public ExampleFragment() {
android:layout_height="match_parent" a super(R.layout.example_fragment);
ndroid:orientation="vertical" }
android:background="#00ff00" >
@Override
<TextView public View onCreateView(LayoutInflater inflater, ViewGroup container,
android:id="@+id/textView1" Bundle savedInstanceState) {
android:layout_width="wrap_content" // TODO Auto-generated method stub
android:layout_height="wrap_content" return inflater.inflate(R.layout. example_fragment,container, false);
android:text="fragment frist" /> }
</LinearLayout> }

5 6
06/02/2021 06/02/2021

Méthode dynamique Méthode dynamique


 Tous les étapes de la méthode statique,  Exemple :
 Contrairement à l'approche XML, l'attribut android: name
n'est pas utilisé dans la balise FragmentContainerView. public class ExampleActivity extends AppCompatActivity {
public ExampleActivity() {
super(R.layout.example_activity);
}
 Etape 6 : Lier un fragment a FragmentContainerView par @Override
programmation protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.setReorderingAllowed(true)
.add(R.id.fragment_container_view, ExampleFragment.class, null)
.commit();
}
}
}

Méthode dynamique FragmentTransaction


 Etape 6 : Lier le fragment dans l’activity qui affiche fragment  un FragmentManager peut ajouter, supprimer, remplacer et
 Vérifier si le fragment n’est pas encore ajouté effectuer d'autres actions avec des fragments en réponse à
 Obtenir une instance de FragmentManager l'interaction de l'utilisateur.
 Utiliser FragmentManager pour créer un FragmentTransaction  Vous pouvez regrouper plusieurs actions en une seule
afin ajouter/supprimer/remplacer un fragment transaction
 Chaque FragmentTransaction doit utiliser
setReorderingAllowed (true):

7 8
06/02/2021 06/02/2021

Ajouter ,supprimer et remplacer des


fragments le composant de navigation
 Ajouter :
 La fonction add () reçoit ID de ressource fragment, ainsi que le nom de  Naviguer entre, entrer et sortir des différents
classe du fragment. éléments de contenu de votre application.
 Le fragment ajouté passe à l'état RESUMED.
 Pour supprimer:  Implémenter par composant de navigation
 appelez remove (), en transmettant une instance de fragment qui a été d’android Jetpack
récupérée du fragmentManager via findFragmentById () ou
findFragmentByTag ()  Le composant Navigation garantit également
 la vue est supprimée du conteneur à ce stade. Le fragment supprimé est
déplacé vers l'état DESTROYED. une expérience utilisateur cohérente et
 Remplacer : prévisible en adhérant à un ensemble de
 replace () pour remplacer un fragment existant dans un conteneur par une principes établis.
instance d'une nouvelle classe de fragment que vous fournissez.
 Appeler replace () équivaut à appeler remove () avec un fragment dans un
conteneur et à ajouter un nouveau fragment à ce même conteneur.

FragmentManager le composant de navigation


 FragmentManager est la classe chargée d'effectuer des actions  Il se compose de trois éléments clés :
 Navigation graph : nouvelle ressource XML qui contient toutes les
sur les fragments de votre application, telles que les ajouter, informations relatives à la navigation dans un emplacement centralisé.
les supprimer ou les remplacer.  NavHost: un conteneur vide qui affiche les destinations de votre
 Accéder au FragmentManager : graphique de navigation.
 NavController: un objet qui gère la navigation d'application dans un
 Dans une activité: NavHost.
 getSupportFragmentManager() méthode  Lorsque vous naviguez dans votre application, vous indiquez
 Dans un fragment : au NavController que vous souhaitez naviguer le long d'un
 getChildFragmentManager(). chemin spécifique dans votre graphique de navigation ou
 getParentFragmentManager()
directement vers une destination spécifique.
 Le NavController affiche alors la destination appropriée dans
NavHost.

9 10
06/02/2021 06/02/2021

Mise en place Mise en place


 Etape 1 : Configurez votre environnement
 Fichier : build.gradle (app)
dependencies {
def nav_version = "2.3.2"

// Java language implementation


implementation "androidx.navigation:navigation-fragment:$nav_version"
implementation "androidx.navigation:navigation-ui:$nav_version"

// Feature module Support


implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

implementation "androidx.navigation:navigation-compose:1.0.0-alpha05"
}

Mise en place Mise en place


 Etape 2 : Créer un graphe de navigation:  Etape 2 : Créer un graphe de navigation:
 La navigation s'effectue entre les destinations de votre
application, c'est-à-dire à tout endroit de votre
application vers lequel les utilisateurs peuvent naviguer.
 Ces destinations sont connectées via des actions .
 Exemple :

11 12
06/02/2021 06/02/2021

Mise en place Mise en place


 Dans la fenêtre Projet, cliquez avec le bouton droit sur le  Etape 3 :Ajouter un NavHost à une activité
‘res’ répertoire et sélectionnez:  Exemple :
 new> Fichier de ressources Android .
 Fichier : activity_main
 Le nouveau fichier de ressources boîte de dialogue s'affiche.
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph" />

Mise en place Mise en place


 Etape 2 : créer un graphe de navigation  Etape 3 :Ajouter un NavHost à une activité:
 Vous pouvez modifier visuellement les graphiques de  Attribut xml :
navigation(Editeur de navigation) ou modifier directement le  L' android:name : contient le nom de classe de votre NavHost
XML sous-jacent.  L' app:navGraph attribut associe le NavHostFragment à un
 Fichier nav_graph.xml : graphique de navigation.
<?xml version="1.0" encoding="utf-8"?>  L' app:defaultNavHost="true"attribut garantit que vous
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
NavHostFragment intercepte le bouton Retour du système.
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_graph">

</navigation>

13 14
06/02/2021 06/02/2021

Mise en place Mise en place


 Etape 4 :Ajouter des destinations au graphique de navigation  Etape 5 : Connecter les destinations
 Créer une destination à partir d'un fragment ou d'une activité  Une action est une connexion logique entre des destinations.
existante.  Les actions sont représentées dans le graphique de navigation
sous forme de flèches.
 Les actions connectent généralement une destination à une
autre,
 On peut créer des actions globales qui vous mènent vers une
destination spécifique à partir de n'importe où dans votre
application.

Mise en place Mise en place


 Etape 4 :Ajouter des destinations au graphique de navigation  Etape 5 : Connecter les destinations
 Chaque destination contient les champs suivants :  Dans l’éditeur de graphe, cliquez sur le cercle du premier
 Le champ Type indique si la destination est implémentée en tant que fragment et faites glisser votre curseur sur la destination.
fragment, activité ou autre classe personnalisée dans votre code source.
 Le champ Label contient le nom du fichier de mise en page XML de la
destination.
 Le champ ID contient l'ID de la destination qui est utilisé pour faire
référence à la destination dans le code.
 La liste déroulante Classe affiche le nom de la classe associée à la
destination.

15 16
06/02/2021 06/02/2021

Mise en place Mise en place


 Etape 5 : connecter les destinations ;  Etape 6 : Naviguer vers une destination
 Chaque action contient les champs suivants :  Via BottomNavigationView
 Le champ Type contient «Action».  Créer un BottomNavigationView (un menu)
 Le champ ID contient l'ID de l'action.  BottomNavigationView est lié au NavController par le code suivant :
 La destination champ contient l'ID du fragment de destination.
<fragment
android:id="@+id/blankFragment" AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
android:name="com.example.cashdog.cashdog.BlankFragment" R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications)
android:label="fragment_blank" .build();
tools:layout="@layout/fragment_blank" > NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
<action NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
android:id="@+id/action_blankFragment_to_blankFragment2" NavigationUI.setupWithNavController(navView, navController);
app:destination="@id/blankFragment2" />
invalidateOptionsMenu();
</fragment>
<fragment
android:id="@+id/blankFragment2"
android:name="com.example.cashdog.cashdog.BlankFragment2"
android:label="fragment_blank_fragment2"
tools:layout="@layout/fragment_blank_fragment2" />

Mise en place
 Etape 6 : Naviguer vers une destination
 La navigation vers une destination se fait à l'aide d'un
NavController.
 Chaque NavHost a son propre NavController correspondant.
 Vous pouvez récupérer un NavController à l'aide de l'une des
méthodes suivantes:
 NavHostFragment.findNavController(Fragment)
 Navigation.findNavController(Activity, @IdRes int viewId)
 Navigation.findNavController(View)

17 18

Vous aimerez peut-être aussi