Android-Programmierung Fragment
Willemers Informatik-Ecke
Zurück zur Android-Hauptseite

Ein Fragment dient dazu, Activities zu untergliedern. Sie schreiben ein eigenes Fragment, indem Sie die Klasse Fragment erweitern. Mit Android Studio können Sie über den Menüpunkt File|New|Fragment auch ein Fragment generieren lassen.

Wenn Sie ein leeres Fragment von Android-Studio erzeugen, müssen Sie vor seiner Benutzung den OnFragmentInteractionListener implementieren. Für erste Experimente reicht es, den if-else-Block in onAttach auszukommentieren.

Soll das Fragment eine eigene Oberfläche besitzen, überschreiben Sie dessen Methode onCreateView(). Hier binden Sie auch die Layout-XML-Datei ein, indem Sie inflate() aufrufen - und nicht in onCreate().

public class MeinFragment extends Fragment {
    // ...

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_mein, container, false);
    }

    // ...
}
Dazu erstellt Android-Studio auch gleich eine XML-Datei:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MeinFragment">

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/hello_blank_fragment" />

</FrameLayout>
Über die values/strings.xml wird ein Text "Hello blank fragment" ausgegeben. Dazu muss das Fragment aber zunächst in die Activity eingebunden werden.

Um ein Fragment mit einer Activty zu verbinden, kann sie einfach in die XML-Layout-Datei der Activity eingetragen werden. In der grafischen Gestaltungs-Editor finden Sie unter Containers einen Eintrag <fragment>. Diesen ziehen Sie mit der Maus an die Zielposition in der Activity. Anschließend erscheint ein Dialog mit der Frage, welches Fragment es denn gern sein soll. Wählen Sie aus und klicken Sie OK.

Das Fragment wird in das Layout der Activity eingebunden.

<RelativeLayout xmlns:android= "http://schemas.android.com/apk/res/android"
    xmlns:tools= "http://schemas.android.com/tools"
    android:id= "@+id/activity_main"
    android:layout_width= "match_parent"
    android:layout_height= "match_parent"
    tools:context= ".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:orientation="vertical"
        >

    <fragment
        android:id="@+id/fragment"
        android:name="de.willemer.testfragment.MeinFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <fragment
        android:id="@+id/nochfragment"
        android:name="de.willemer.testfragment.NochEinFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    </LinearLayout>
</RelativeLayout>
Wird das Fragment von der Activity an dessen Context gebunden, wird im Fragment die Methode onAttach ausgelöst. Wird es wieder entfernt, die Methode onDetach.

Da Fragmente in Activities eingebettet werden, benötigen sie keinen Eintrag in der Manifest-Datei.