Android - Back Button und Fragment Backstack funktionieren nicht

Ich entwickle eine einfache fragmentbasierte Anwendung mit einer einzigen FragmentActivity. Jeder 'Bildschirm' der Anwendung ist in einem Fragment enthalten und alle Fragmente werden beim Start der Anwendung zum Container-Layout hinzugefügt.

// Set up fragments in Main Activity
fragMan = getFragmentManager();
FragmentTransaction ft = fragMan.beginTransaction();
ft.add(R.id.fragment_container, settingsFragment);
ft.add(R.id.fragment_container, mapFragment);
ft.add(R.id.fragment_container, tracksFragment);
ft.add(R.id.fragment_container, waypointsFragment);
ft.commit();

Übergänge werden ausgeführt, indem das aktuell sichtbare Fragment ausgeblendet und anschließend das entsprechende Fragment angezeigt wird.

ft = fragMan.beginTransaction();
ft.show(mapFragment);
ft.addToBackStack(null);
ft.commit();

Dies alles funktioniert einwandfrei, aber wenn die Zurück-Taste gedrückt wird, wird die Anwendung beendet, unabhängig davon, welcher Bildschirm angezeigt wird oder welche vorherigen Transaktionen dem Backstack hinzugefügt wurden.

Ich habe überprüft, ob der Backstack ordnungsgemäß Datensätze sammelt, und viele verschiedene Überblendungsmethoden ausprobiert, z. B. Fragmente ersetzt, anstatt sie auszublenden / anzuzeigen, neue Fragmentinstanzen erstellt und nicht in Variablen usw. gespeichert Wie ich sehen kann, stimmt mein Code mit allen Tutorials und Beispielen überein, die ich finden kann, und ich konnte nicht einmal ähnliche Fragen / Beispiele für ähnliche Probleme finden, vermutlich, weil die Standardimplementierung für andere "nur funktioniert".

Ich vermute, dass es sich um ein Problem auf Anwendungsebene handelt, z. B. um eine Eigenschaft in meinem Manifest (die ich ziemlich gründlich untersucht habe) oder um etwas, das mit der Einrichtung meiner Anwendung zusammenhängt und die ordnungsgemäße Funktion der Schaltfläche "Zurück" verhindert. Ich kann onBackPressed überschreiben, um die Übergänge manuell zu behandeln, aber dies scheint eine sehr hässliche Problemumgehung zu sein. Irgendwelche Ideen, warum sich dies möglicherweise nicht wie erwartet verhält? Übrigens auf einem Nexus 7 mit Jelly Bean.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage