Sobes.tech
Junior

Hoe kunnen fragments in een Activity worden geïmplementeerd?

sobes.tech AI

Antwoord van AI

In Activity-fragmenten kunnen deze declaratief in XML worden geïmplementeerd of programmatisch met behulp van FragmentManager.

Declaratief (in XML):

<fragment
    android:id="@+id/my_fragment"
    android:name="com.example.MyFragment" // Volledige klasse naam van het fragment
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  • Het fragment wordt toegevoegd bij het maken van de Activity.
  • Gemakkelijk te gebruiken voor statische lay-outs.
  • Minder flexibel voor dynamische operaties.

Programmeerbaar (met FragmentManager):

// Binnen een Activity-methode, bijvoorbeeld onCreate of bij een gebeurtenis
val fragmentManager = supportFragmentManager // Voor AppCompatActivity
val fragmentTransaction = fragmentManager.beginTransaction()

// Fragment toevoegen
val myFragment = MyFragment()
fragmentTransaction.add(R.id.fragment_container, myFragment)

// Fragment vervangen (verwijdert de bestaande in de container en voegt een nieuwe toe)
// val newFragment = NewFragment()
// fragmentTransaction.replace(R.id.fragment_container, newFragment)

// Fragment verwijderen
// val fragmentToRemove = fragmentManager.findFragmentById(R.id.fragment_container)
// if (fragmentToRemove != null) {
//     fragmentTransaction.remove(fragmentToRemove)
// }

// Toevoegen aan de Back Stack (laat de gebruiker terugkeren naar het vorige fragment met de "Terug"-knop)
fragmentTransaction.addToBackStack(null) // String-tag voor de back stack (kan null zijn)

// Transactie voltooien
fragmentTransaction.commit() // Asynchrone uitvoering
// of
// fragmentTransaction.commitNow() // Synchrone uitvoering
  • FragmentManager wordt gebruikt om de fragmenten te beheren.
  • FragmentTransaction wordt gebruikt om operaties uit te voeren (toevoegen, verwijderen, vervangen, etc.).
  • Biedt meer flexibiliteit voor het dynamisch wijzigen van de UI tijdens runtime.
  • Kan de Back Stack beheren voor navigatie.

Gebruik van container:

Voor het programmatisch toevoegen of vervangen van fragmenten wordt meestal een container in de XML-layout van de Activity gebruikt, bijvoorbeeld FrameLayout of LinearLayout:

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Vervolgens wordt in de Activity-code het fragment binnen deze container toegevoegd of vervangen.

Belangrijke aspecten:

  • De levenscyclus van het fragment is nauw verbonden met die van de Activity.
  • FragmentManager beheert de levenscyclus en toestand van de fragmenten.
  • De fragmenttransactie wordt atomair uitgevoerd (of de hele operatie of geen).
  • Bij gebruik van de Back Stack moet addToBackStack() worden aangeroepen.
  • Voor werken met fragmenten in AppCompatActivity gebruik je supportFragmentManager.