Post Detail
Post #142
EN
Kotlin Fragments
Notes Fragments
- Un Fragment = un morceau d’interface GUI
- Il dispose de son layout et son fonctionnement
- Un Fragment peut être statique → il reste dans la GUI
- un fragment peut être dynamique → il peut être ajouté / enlevé de l’interface
Les fragments offrent beaucoup de possiblilités d’agencement d’interface GUI et combinés avec les quantificateurs (land, w600do, …)
Steps
- Création d’un nouveau projet DemoFragment (EmptyActivity)
- onCreateView() → retourne le layout du fragment
- companion object → obligatoire pour définir la méthode newInstance() laquelle permettra e créer de nouveaux fragments en cours d’exécution de l’application
1class MainFragment : Fragment() {
2
3 /// onCreateView() doit toujours être présente --> Le Fragment acquiert son layout
4 override fun onCreateView(
5 inflater: LayoutInflater, container: ViewGroup?,
6 savedInstanceState: Bundle?
7 ): View? { /// On retourne un composant View
8 // Inflate the layout for this fragment
9 return inflater.inflate(R.layout.fragment_main, container, false)
10 }
11
12 /// Obligatoire grâce à lui on définit la méthode newInstance()
13 companion object {
14 fun newInstance() : MainFragment {
15 return MainFragment()
16 }
17 }
18}
Fragment Statique
Fragment statique est associé automatiquement à un tag <fragment> dans le layout de l’activité.
→ main_fragment.xml
→ activity_main.xml (cible pour le fragment)
Dans activity_main on définit le tag <fragment> pour y placer un fragment statique :
1<fragment
2 xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:name="ch.ceff.android.demofragments.fragment.MainFragment"
6 android:id="@+id/TODO"
7 />
Ajout d’une seconde Activity avec un second Fragment
-
Avec un clic sur le bouton on veut passerr de MainActivity à DetailActivity → problème: le bouton se trouve dans le Fragment MainFragment !!! → le Fragment ne peut pas demander le changement d’Activity
-
Dialogue: Fragment → Activity !!! → mise en place d’une interface pour dialoguer
- L’interface est définie dans MainFragment.
→ Pour développer un layout spécial tablette, il faut pouvoir créer des Fragments de manière dynamique.
→ Stop utiliser <fragment> et les remplacer par des <FrameLayout>
1<?xml version="1.0" encoding="utf-8"?>
2<FrameLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:id="@+id/frame_layout_main" />
1<?xml version="1.0" encoding="utf-8"?>
2<FrameLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:id="@+id/frame_layout_detail"
5 android:layout_width="match_parent"
6 android:layout_height="match_parent" />
No comments here yet.