Kotlin Fragments

Post #142 written by Khodok in Code

Content

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

  1. 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
Kotlin
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
class MainFragment : Fragment() {

    /// onCreateView() doit toujours être présente --> Le Fragment acquiert son layout
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? { /// On retourne un composant View
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_main, container, false)
    }

    /// Obligatoire grâce à lui on définit la méthode newInstance()
    companion object {
        fun newInstance() : MainFragment {
            return MainFragment()
        }
    }
}

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 :

XML
1
2
3
4
5
6
7
<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:name="ch.ceff.android.demofragments.fragment.MainFragment"
    android:id="@+id/TODO"
    />

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>

XML
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/frame_layout_main" />
XML
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/frame_layout_detail"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
Comments

Please Log in to leave a comment.

No comments yet.