0Pricing
Android Academy · Lektion

Fragments

Erstellen Sie modulare Benutzeroberflächen mit Fragments. Lernen Sie den Fragment-Lebenszyklus, ViewBinding in Fragments, die Übergabe von Argumenten, die Verwaltung des Backstacks und die Kommunikation zwischen Fragmenten und Activities kennen.

Fragments ist eine kostenlose Android Academy-Lektion auf CoddyKit. Dies ist Lektion 6 von 7. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Android Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Android Academy-Kurs umfasst insgesamt 7 Lektionen.

Was sind Fragments?

Ein Fragment ist ein wiederverwendbares UI-Modul, das innerhalb einer Activity ausgeführt wird. Stellen Sie es sich als Unter-Activity mit eigenem Layout, eigenem Lebenszyklus und eigener Logik vor.

Warum Fragments verwenden?

  • UI in mehreren Activities wiederverwenden
  • Unterschiedliche Layouts für Smartphones und Tablets verwalten
  • Abläufe über mehrere Bildschirme ohne mehrere Activities erstellen
  • Natürlich mit der Navigation Component arbeiten

Fragment-Lebenszyklus

Fragments haben ihren eigenen Lebenszyklus, der parallel zum Lebenszyklus der Activity abläuft. Wichtige Callbacks:

  • onAttach – Fragment an Activity angehängt
  • onCreate – Fragment erstellt (noch keine View)
  • onCreateView – Layout laden
  • onViewCreated – View bereit; hier die UI einrichten
  • onDestroyView – View zerstört (View-Referenzen freigeben)
  • onDetach – Fragment entfernt

Ein Fragment erstellen

Erstellen Sie eine Klasse, die Fragment erweitert, und überschreiben Sie onCreateView, um das Layout zu laden:

import androidx.fragment.app.Fragment
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup

class HomeFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.fragment_home, container, false)
    }
}

ViewBinding in Fragments

Verwenden Sie ViewBinding in Fragments – geben Sie das Binding jedoch in onDestroyView frei, um Memory Leaks zu vermeiden:

class HomeFragment : Fragment() {

    private var _binding: FragmentHomeBinding? = null
    private val binding get() = _binding!!

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
        _binding = FragmentHomeBinding.inflate(inflater, container, false)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        binding.tvTitle.text = "Welcome!"
    }

    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null   // prevent memory leak
    }
}

Fragment-Layout-XML

Erstellen Sie res/layout/fragment_home.xml genau wie ein Activity-Layout. Die Root-View wird zur View des Fragments:

<!-- res/layout/fragment_home.xml -->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:text="Home" />

</LinearLayout>

Ein Fragment zu einer Activity hinzufügen

Es gibt zwei Möglichkeiten, ein Fragment zu einer Activity hinzuzufügen:

  • Statisch (XML) – im Layout mit dem Tag <fragment> deklarieren. Zur Laufzeit festgelegt.
  • Dynamisch (Code) – FragmentManager und Transaktionen verwenden. Kann zur Laufzeit ausgetauscht werden.
<!-- Static: in activity_main.xml -->
<fragment
    android:id="@+id/homeFragment"
    android:name="com.example.HomeFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Dynamische Fragment-Transaktionen

Verwenden Sie supportFragmentManager, um Fragments zur Laufzeit hinzuzufügen, zu ersetzen oder zu entfernen:

// In Activity:
class MainActivity : AppCompatActivity(R.layout.activity_main) {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        if (savedInstanceState == null) {
            supportFragmentManager.beginTransaction()
                .add(R.id.fragmentContainer, HomeFragment())
                .commit()
        }
    }

    fun showDetail(id: Int) {
        supportFragmentManager.beginTransaction()
            .replace(R.id.fragmentContainer, DetailFragment.newInstance(id))
            .addToBackStack(null)  // allow back navigation
            .commit()
    }
}

Argumente an Fragments übergeben

Übergeben Sie Daten über ein Bundle mithilfe des Factory-Musters mit einem companion object. Verwenden Sie niemals einen Fragment-Konstruktor mit Parametern – Android erstellt Fragments nach Konfigurationsänderungen mit einem parameterlosen Konstruktor neu:

class DetailFragment : Fragment() {

    companion object {
        private const val ARG_ID = "item_id"

        fun newInstance(itemId: Int): DetailFragment {
            return DetailFragment().apply {
                arguments = Bundle().apply {
                    putInt(ARG_ID, itemId)
                }
            }
        }
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        val itemId = requireArguments().getInt(ARG_ID)
        // use itemId to load data
    }
}

Kommunikation zwischen Fragment und Activity

Verwenden Sie ein im Fragment definiertes Interface, das von der Activity implementiert wird. Das Fragment erhält über onAttach eine Referenz:

class ListFragment : Fragment() {

    interface OnItemSelected {
        fun onItemSelected(id: Int)
    }

    private var listener: OnItemSelected? = null

    override fun onAttach(context: Context) {
        super.onAttach(context)
        listener = context as? OnItemSelected
    }

    private fun handleClick(id: Int) {
        listener?.onItemSelected(id)
    }

    override fun onDetach() {
        super.onDetach()
        listener = null
    }
}

Back Stack

Wenn Sie in einer Transaktion addToBackStack(null) aufrufen, entfernt das Drücken der Zurück-Taste das Fragment aus dem Stack:

  • Ohne addToBackStack – die Zurück-Taste beendet die Activity
  • Mit addToBackStack – die Zurück-Taste kehrt zum vorherigen Fragment zurück
  • Verwenden Sie popBackStack(), um programmgesteuert zurückzunavigieren

Fragment in einem Container

Das Activity-Layout benötigt lediglich eine Container-View – normalerweise ein FrameLayout mit einer ID. Das Fragment füllt diesen Container:

<!-- activity_main.xml -->
<FrameLayout
    android:id="@+id/fragmentContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Schnelltest

Warum sollten Sie niemals Konstruktorargumente an ein Fragment übergeben, sondern stattdessen ein Bundle über eine companion Factory verwenden?

Zusammenfassung: Fragments

Fragments sind die Bausteine moderner Android-UIs:

  • Fragment erweitern und das Layout in onCreateView laden
  • Die UI in onViewCreated einrichten
  • ViewBinding in onDestroyView freigeben
  • Daten über Bundle und eine companion Factory (newInstance) übergeben
  • addToBackStack für die Zurück-Navigation verwenden
  • Über ein Interface mit der Activity kommunizieren

Als Nächstes: Gefährliche Berechtigungen zur Laufzeit anfordern.

Häufig gestellte Fragen

Ist die Lektion „Fragments“ kostenlos?

Ja — der vollständige Text von „Fragments“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Android Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Android Academy-Kurs umfasst insgesamt 7 Lektionen.

Was lerne ich in „Fragments“?

Erstellen Sie modulare Benutzeroberflächen mit Fragments. Lernen Sie den Fragment-Lebenszyklus, ViewBinding in Fragments, die Übergabe von Argumenten, die Verwaltung des Backstacks und die Kommunikat… Du übst Android Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Android Academy zu starten?

Keine Vorkenntnisse erforderlich. Android Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 6 von 7.

Wie lange dauert die Lektion „Fragments“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Android Academy-Lektion Code schreiben und ausführen?

Ja. Jede Android Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Projektstruktur und Manifest
  2. Aktivitäten und Lebenszyklus
  3. Layouts und Views
  4. Benutzereingaben verarbeiten
  5. Intents und Navigation
  6. Fragments
  7. Berechtigungen und Laufzeitanfragen
← Zurück zu Android Academy