Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Introduction au fragment
ZEMALI Elamine
Comprendre le paradigme de
conception des fragments
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.
1
06/02/2021
Modularité
Les fragments introduisent la modularité et la réutilisabilité.
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
globaux autour de l'interface utilisateur de votre application,
comme barre de navigation
Exemple: une application qui répond à différentes tailles
d'écran.
Modularité
Activity A Activity A
Activity B
2
06/02/2021
CYCLE DE LA VIE
Tout comme les activités, les fragments ont également un cycle de vie:
Attachez- vous à l'activité - onAttach (Activity)
Créer un fragment - onCreate (Bundle)
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
DialogFragment - Pour afficher la boîte de dialogue
flottante
PreferenceFragment - Utile pour créer une activité
de paramètres
3
06/02/2021
Méthode Statique
Les étapes :
Configurez votre environnement
Définir la disposition des éléments graphiques dans fichier XML
propre au fragment.
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.
4
06/02/2021
Méthode Statique
• Configurez votre environnement
Fichier: build.gradle
buildscript {
repositories {
google() }}
allprojects {
repositories {
google()}}
dependencies {
def fragment_version = "1.2.5"
implementation "androidx.fragment:fragment:$fragment_version"
}
Méthode Statique
Définir la disposition des éléments :
Fichier: ExampleFragment.xml
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="fragment frist" />
</LinearLayout>
5
06/02/2021
Méthode Statique
Ajouter la balise FragmentContainerView dans l'activité:
Fichier: activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<androidx.fragment.app.FragmentContainerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.example.ExampleFragment" />
</LinearLayout>
Méthode Statique
Créer une classe qui correspond au fragment:
Fichier: ExampleFragment.java
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout. example_fragment,container, false);
}
}
6
06/02/2021
Méthode dynamique
Tous les étapes de la méthode statique,
Contrairement à l'approche XML, l'attribut android: name
n'est pas utilisé dans la balise FragmentContainerView.
Méthode dynamique
Etape 6 : Lier le fragment dans l’activity qui affiche fragment
Vérifier si le fragment n’est pas encore ajouté
Obtenir une instance de FragmentManager
Utiliser FragmentManager pour créer un FragmentTransaction
afin ajouter/supprimer/remplacer un fragment
7
06/02/2021
Méthode dynamique
Exemple :
FragmentTransaction
un FragmentManager peut ajouter, supprimer, remplacer et
effectuer d'autres actions avec des fragments en réponse à
l'interaction de l'utilisateur.
Vous pouvez regrouper plusieurs actions en une seule
transaction
Chaque FragmentTransaction doit utiliser
setReorderingAllowed (true):
8
06/02/2021
FragmentManager
FragmentManager est la classe chargée d'effectuer des actions
sur les fragments de votre application, telles que les ajouter,
les supprimer ou les remplacer.
Accéder au FragmentManager :
Dans une activité:
getSupportFragmentManager() méthode
Dans un fragment :
getChildFragmentManager().
getParentFragmentManager()
9
06/02/2021
le composant de navigation
Naviguer entre, entrer et sortir des différents
éléments de contenu de votre application.
Implémenter par composant de navigation
d’android Jetpack
Le composant Navigation garantit également
une expérience utilisateur cohérente et
prévisible en adhérant à un ensemble de
principes établis.
le composant de navigation
Il se compose de trois éléments clés :
Navigation graph : nouvelle ressource XML qui contient toutes les
informations relatives à la navigation dans un emplacement centralisé.
NavHost: un conteneur vide qui affiche les destinations de votre
graphique de navigation.
NavController: un objet qui gère la navigation d'application dans un
NavHost.
Lorsque vous naviguez dans votre application, vous indiquez
au NavController que vous souhaitez naviguer le long d'un
chemin spécifique dans votre graphique de navigation ou
directement vers une destination spécifique.
Le NavController affiche alors la destination appropriée dans
NavHost.
10
06/02/2021
Mise en place
Etape 1 : Configurez votre environnement
Fichier : build.gradle (app)
dependencies {
def nav_version = "2.3.2"
implementation "androidx.navigation:navigation-compose:1.0.0-alpha05"
}
Mise en place
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
06/02/2021
Mise en place
Mise en place
Etape 2 : Créer un graphe de navigation:
12
06/02/2021
Mise en place
Dans la fenêtre Projet, cliquez avec le bouton droit sur le
‘res’ répertoire et sélectionnez:
new> Fichier de ressources Android .
Le nouveau fichier de ressources boîte de dialogue s'affiche.
Mise en place
Etape 2 : créer un graphe de navigation
Vous pouvez modifier visuellement les graphiques de
navigation(Editeur de navigation) ou modifier directement le
XML sous-jacent.
Fichier nav_graph.xml :
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_graph">
</navigation>
13
06/02/2021
Mise en place
Etape 3 :Ajouter un NavHost à une activité
Exemple :
Fichier : activity_main
<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
Etape 3 :Ajouter un NavHost à une activité:
Attribut xml :
L' android:name : contient le nom de classe de votre NavHost
L' app:navGraph attribut associe le NavHostFragment à un
graphique de navigation.
L' app:defaultNavHost="true"attribut garantit que vous
NavHostFragment intercepte le bouton Retour du système.
14
06/02/2021
Mise en place
Etape 4 :Ajouter des destinations au graphique de navigation
Créer une destination à partir d'un fragment ou d'une activité
existante.
Mise en place
Etape 4 :Ajouter des destinations au graphique de navigation
Chaque destination contient les champs suivants :
Le champ Type indique si la destination est implémentée en tant que
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
06/02/2021
Mise en place
Etape 5 : Connecter les destinations
Une action est une connexion logique entre des destinations.
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
Etape 5 : Connecter les destinations
Dans l’éditeur de graphe, cliquez sur le cercle du premier
fragment et faites glisser votre curseur sur la destination.
16
06/02/2021
Mise en place
Etape 5 : connecter les destinations ;
Chaque action contient les champs suivants :
Le champ Type contient «Action».
Le champ ID contient l'ID de l'action.
La destination champ contient l'ID du fragment de destination.
<fragment
android:id="@+id/blankFragment"
android:name="com.example.cashdog.cashdog.BlankFragment"
android:label="fragment_blank"
tools:layout="@layout/fragment_blank" >
<action
android:id="@+id/action_blankFragment_to_blankFragment2"
app:destination="@id/blankFragment2" />
</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
06/02/2021
Mise en place
Etape 6 : Naviguer vers une destination
Via BottomNavigationView
Créer un BottomNavigationView (un menu)
BottomNavigationView est lié au NavController par le code suivant :
18