Warum ist Fragment.addToBackStack (), wodurch die Zurück-Taste, nichts zu tun?
- Aktivität 1 sichtbar ist. Drücken Sie eine Taste, und die Aktivität 2 öffnet.
- Aktivität 2 fügt Ein fragment zu sich selbst (und zurück Stapel) und es zeigt feine
- Drücken einer Taste innerhalb der fragment-übergänge zu einem anderen fragment, B
- Zurück-Taste Drücken. Nichts passiert. Huh? Die Zurück Taste ist scheinbar absorbiert und nicht gehandelt, die Anzeige bleibt die gleiche.
- Die Zurück-Taste drücken Sie ein zweites mal, es wird auf die Aktivität 1, wie erwartet.
Warum ist mein fragment nicht gezeigt in Schritt 4? Ich habe das fragment auf der Rückseite-stack, also warum (wenn Sie die Zurück-Taste scheint von dessen Existenz wissen) tut es nicht zeigen das fragment?
Hier ist der code, den ich verwende in Aktivität 2 öffnen Fragment A.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_profile_edit);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
transaction.addToBackStack(null);
transaction.add(android.R.id.content, new MyFragment());
transaction.commit();
}
Und hier ist der code zum öffnen Fragment B
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
transaction.add(android.R.id.content, new MyOtherFragment());
transaction.commit();
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie versucht
transaction.replace(...)
statttransaction.add(...)
? Das sollte funktionieren. Ich vermute, weil, wenn Sie nur das hinzufügen von ein fragment über ein anderes, es nicht zu sehen die Transaktion als Sie gehen wollte zurück fro Fragment A.BEARBEITEN
Die eigentliche Antwort für die Frage ist, unten in die Kommentare: addToBackStack() sollte verwendet werden, auf dem fragment, die ersetzen, nicht die, die Sie ersetzt wird.