I derzeit für Android eine Anwendung am Bau (14 < = SDK < = 21) von einer ActionBarActivity
und Fragments
verwenden, wie ListFragment
und MapFragment
, die innerhalb eines einzelnen vertauscht FrameLayout
Ansicht.Fragment addToBackStack() und popBackStackImmediate() nicht funktioniert
Die ActionBarActivity ersetzt automatisch das/commit-Fragment A. Wenn der Benutzer dann auf eine Schaltfläche klickt, ersetzt/hostet die hostende Aktivität ein neues, anderes Fragment B. Mein Ziel ist es, den Benutzer so schnell wie möglich wieder auf Fragment A zu setzen drückt den Zurück-Knopf.
Einige Code jetzt.
MainActivity
public class MainActivity extends ActionBarActivity implements StopFragment.OnFragmentInteractionListener,
StopItemFragment.OnFragmentInteractionListener {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragmentManager = getFragmentManager();
fragmentManager.enableDebugLogging(true);
...
if (fragmentManager.findFragmentById(R.id.content_frame) == null) {
StopItemFragment list = StopItemFragment.newInstance(null); //A - extends ListFragment
fragmentManager.beginTransaction()
.replace(R.id.content_frame, list)
.addToBackStack(null)
.commit();
}
...
@Override
public void onFragmentInteraction(String id) {
selectItem(Integer.parseInt(id));
}
private void selectItem(int position) {
StopFragment fragment = StopFragment.newInstance(null, null); //B - extends Fragment
...
fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment)
.commit();
...
}
}
Problem
Auch wenn addToBackStack()
genannt wird, wenn ich auf dem Fragment B, bin ich direkt geschlossen nicht in der Lage zurück zu Fragmente A. MainActivity zu gehen. Dennoch habe ich versucht, den Backstack ohne Glück zu verwalten. Ich kann sehen, dass das Fragment auf dem Stapel ist, aber wenn ich popBackStackImmediate()
rufe, wird Fragment A ausgeblendet und die Fragmenttransaktion wird nicht ausgeführt. (Erste Gegendruck nichts passieren, geschlossen zweite Aktivität)
Ich lege auch die FragmentManager logcat:
http://pastebin.com/hFLHprL8
Vielen Dank. Ich frage mich, warum Android-Dokumentation diese wichtige Sache nicht erwähnt, oder ich vermisse es einfach ... – Ryde