Ich lerne Fragmente und unten ist mein erstes Fragment-Programm. Ein einfaches Projekt, wo ich 2 Bildschirme habe. Wenn ich auf die nächste Schaltfläche des ersten Bildschirms klicke, muss die zweite Schaltfläche angezeigt werden.
Ich ziele auf Android 2.1 und höher und mit dem Kompatibilitätspaket
Nun, ich bekomme den ersten Bildschirm gut. Jetzt,
onCreate()
und onCreateView()
wird aufgerufen. onCreate()
und onCreateView()
werden aufgerufen. Jetzt kann mein Verständnis von Fragment falsch sein. Aber ich glaube, wenn wir eine Fragmenttransaktion committen (), sollte das erste Fragment durch das zweite ersetzt werden (das erste wird entweder versteckt oder zerstört). Nun scheint nichts zu passieren. Warum das? Sollten wir das erste Fragment manuell zerstören / verstecken?
Hinweis: Ich weiß, dass es eine lange Frage für solch eine grundlegende Sache ist. Aber ich habe meinen gesamten Code eingegeben, da ich nicht sicher bin, wo ich es vermasselt habe.
Nun, ich habe es funktioniert. Beide Antworten auf diese Fragen geben einen Grund dafür, dass mein Code nicht wie erwartet funktioniert. Aber es gab 2 Fehler in meinem Code.
mit fragmentTransaction.add()
wird kein neues Fragment über das alte angezeigt. Sie müssen ersetzen (). Die Antworten waren richtig.
Aber es gab einen weiteren Fehler in meinem Code. Sie können ein statisch in XML erstelltes Fragment nicht ersetzen. Also habe ich
geändertund
Haben Sie versucht, ft.replace (R.id.fragment_container, fragment) anstelle von add zu verwenden? Hinzufügen wird das vorhandene Fragment nicht entfernen.
Sie versuchen, ein weiteres Fragment in fragment_container hinzuzufügen. Es wird hinzugefügt, aber Ihr Fragment ist nicht sichtbar, weil Sie für id_first_fragment Breite und Höhe als fill_parent angegeben haben. Versuchen Sie daher, den Inhalt von wrap_content für das Fragment id_first_fragment festzulegen. Sie können das nächste Fragment sehen, wenn Sie auf die Schaltfläche klicken. Wenn Sie das erste Fragment schließen und das zweite anzeigen möchten, müssen Sie anstelle von add ersetzen.
Tags und Links android fragmenttransaction fragment