Académique Documents
Professionnel Documents
Culture Documents
1- Introduction :
Dans Android, Un fragment est un sous contrôleur d’une activité, contenant une vue
ainsi que son propre cycle de vie, capable d’être ajouté, retiré et déplacé d’une
activité.
• Nous pouvons combiner plusieurs fragments dans une seule activité
pour créer une interface utilisateur à plusieurs volets.
• Réutiliser un fragment dans plusieurs activités.
Le principal avantage d’un fragment est le fait d’être facilement déplaçable. Vous
avez donc tout intérêt à mettre la logique d’une vue dans un fragment, au cas où
vous voudrez déplacer cette vue, ou bien la réutiliser sur un autre écran (exemple :
affichage d’une liste d’utilisateur dans plusieurs emplacements).
Un fragment doit toujours être intégré à une activité et le cycle de vie du fragment
est directement affecté par le cycle de vie de l'activité hôte.
Dans Android, les fragments ont leur propre cycle de vie très similaire à une activité,
mais ils comportent des événements supplémentaires qui sont particuliers à la
hiérarchie de la vue, à l'état et à l'attachement du fragment à son activité.
@Override
public void onAttach (Activité d'activité) {
super.onAttach(activité);
// Ajoutez votre code ici qui s'exécute lorsque l'instance de fragment est
// associée
}
2. onCreate() : Ceci sera appelé lors de la création du fragment. Cela signifie qu'une
nouvelle instance de fragment s'initialise, ce qui se produit toujours après son
attachement à l'hôte.
UNIVERSITE DE CARTHAGE DEPARTEMENT
FACULTE DES SCIENCES DE BIZERTE INFORMATIQUE
Classe : GLSI3 AU : 2021/2022
Matière : Android Studio Semestre : 1
Enseignante : Cherifa Nakkach
@Override
public void onCreate (Bundle saveInstanceState){
super.onCreate(saveInstanceState);
// Ajoutez votre code ici qui s'exécute lorsque l'instance du fragment
// s'initialise
}
@Override
public View onCreateView(gonfleur LayoutInflater , conteneur ViewGroup , Bundle sa
veInstanceState ) {
Vue v = gonfler . inflate ( R . layout . fragment_test , container , false );
/* ajoutez votre code ici pour dessiner l'interface utilisateur pour la première f
ois signifie que dans cette méthode, nous pouvons obtenir la référence des vues qu
i sont créées dans notre fichier xml */
return v ;
}
@Override
public void onViewCreated ( View vue , Bundle saveInstanceState ) {
super.onViewCreated(vue, saveInstanceState );
/* ajoutez votre code ici qui s'exécute après l'exécution de la méthode
onCreateView(). */
}
@Override
public void onActivityCreated ( Bundle saveInstanceState ) {
super . onActivityCreated ( saveInstanceState );
// ajoutez votre code ici qui s'exécute lorsque l'activité hôte est créée.
}
6. onStart() : cette méthode est appelée une fois que le fragment est visible.
@Override
public void onStart () {
super . onStart ();
// ajoutez votre code ici qui s'exécute lorsque le fragment devient visible.
}
@Override
public void onResume () {
super . surResume ();
/* ajoutez votre code ici qui s'exécute lorsque le fragment est visible et
Intraitable */
}
@Override
public void onPause () {
UNIVERSITE DE CARTHAGE DEPARTEMENT
FACULTE DES SCIENCES DE BIZERTE INFORMATIQUE
Classe : GLSI3 AU : 2021/2022
Matière : Android Studio Semestre : 1
Enseignante : Cherifa Nakkach
super.onPause ();
/* ajoutez votre code ici qui s'exécute lorsque l'utilisateur quittant le
fragment actuel ou le fragment n'est plus intraitable. */
}
@Override
public void onStop () {
super.onStop();
// ajoutez votre code ici qui exécute Fragment qui va être arrêté.
}
10. onDestroyView() : cette méthode est appelée lorsque la vue et les autres
ressources associées créées dans la méthode onCreateView() sont supprimées de la
hiérarchie des vues de l'activité et détruites.
11. onDestroy () : cette méthode est appelée pour effectuer le nettoyage final de
l'état du fragment, mais il n'est pas garanti qu'elle soit appelée par la plate-forme
Android. Cette méthode est appelée après la méthode onDestroyView().
12. onDetach() : cette méthode appelée après la méthode onDestroy() pour notifier
que le fragment a été dissocié de son activité d'hébergement signifie que le fragment
est détaché de son activité hôte.
4- Ajout de Fragment :
✓ Via XML :
Pour ajouter de manière déclarative un fragment au XML de votre mise en page
d'activité, utilisez un FragmentContainerView élément.
<androidx.fragment.app.FragmentContainerView
UNIVERSITE DE CARTHAGE DEPARTEMENT
FACULTE DES SCIENCES DE BIZERTE INFORMATIQUE
Classe : GLSI3 AU : 2021/2022
Matière : Android Studio Semestre : 1
Enseignante : Cherifa Nakkach
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" />
✓ Via Programmation:
Pour ajouter par programmation un fragment à la mise en page de votre activité, la
mise en page doit inclure un FragmentContainerViewpour servir de conteneur de
fragments, comme illustré dans l'exemple suivant :
<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" />
Contrairement à l'approche XML, l' android:name attribut n'est pas utilisé dans
le FragmentContainerView ici, donc aucun fragment spécifique n'est
automatiquement instancié. Au lieu de cela, a FragmentTransaction est utilisé pour
instancier un fragment et l'ajouter à la mise en page de l'activité.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.setReorderingAllowed(true)
.add(R.id.fragmentContainerViewFCV,
UNIVERSITE DE CARTHAGE DEPARTEMENT
FACULTE DES SCIENCES DE BIZERTE INFORMATIQUE
Classe : GLSI3 AU : 2021/2022
Matière : Android Studio Semestre : 1
Enseignante : Cherifa Nakkach
CalculImcFragment.class, null)
.commit();
}
initView();
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if(context instanceof CalculImcCallBack){
calculImcCallBack = (CalculImcCallBack) context ;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_calcul_imc, container,
false);
}
UNIVERSITE DE CARTHAGE DEPARTEMENT
FACULTE DES SCIENCES DE BIZERTE INFORMATIQUE
Classe : GLSI3 AU : 2021/2022
Matière : Android Studio Semestre : 1
Enseignante : Cherifa Nakkach
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initView(view);
initEvent();
}
calculerBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculImcCallBack.onButtonClicked();
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.setReorderingAllowed(true)
.add(R.id.fragmentContainerViewFCV,
CalculImcFragment.class, null)
.commit();
}
initView();
}
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setTitle(getString(R.string.fragment));
}
@Override
public void onButtonClicked() {
Toast.makeText(TestActivity.this,"button Clicked
!!",Toast.LENGTH_LONG).show();
}
}