Fragment BackStack/Back button

  • 8 Antworten
  • Letztes Antwortdatum
C

CoffeeCode

Ambitioniertes Mitglied
2
Ich habe in meine Anwendung einen Navigation Drawer eingebaut.
In einem Fragment (A) gelangt man zu einem anderen Fragment (B), nun möchte ich das der BackButton nicht die Anwendung verlässt sondern das vorherige Fragment (A) anzeigt.

Mit dem Beispielcode der Dokumentation ändert sich das verhalten nicht.


Code im Fragment (A)
Code:
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

               [...]

                // Create new fragment and transaction
                Fragment fragment = new FragmentGallery();
                FragmentTransaction transaction = getFragmentManager().beginTransaction();

                // Replace whatever is in the fragment_container view with this fragment,
                // and add the transaction to the back stack
                transaction.replace(R.id.content_frame, fragment);
                transaction.addToBackStack(null);

                // Commit the transaction
                transaction.commit();
            }
        });
 
Code:
transaction.addToBackStack(null);

Der Code macht genau das, was du im sagst. Du übergibst den Backstack ein null - Objekt. D.h. es gibt keine Information über ein Fragment, welches beim drücken der BackButton aufgerufen werden soll.

Fragments | Android Developers
 
Code:
transaction.addToBackStack(FragmentCollection.TAG);

Das hat leider keine Auswirkungen.

FragmentTransaction | Android Developers

Laut der Dokumentation genügt es null zu übergeben. Der String ist Optional und anscheinend für meine Beispiel nicht notwendig.
 
Bei mir funktioniert es. Wie sieht deine komplette Klasse aus?
 
im code nutze ich für meine Fragments:
import android.app.Fragment;
public class Viewer extends Fragment { ...

bin mir jetzt nicht ganz sicher ob das auch das SupportLibrary ist. Ich habe es in meinem Projekt als Library eingefügt aber ich möchte es eigentlich nicht nutzen da ich auf Abwärtskompatibilität (<4.0) keinen Wert lege
 
es schien das Altlasten in der manifest xml Datei schuld waren.

transaction.addToBackStack(null);

reicht völlig aus.

[closed]
 
Aber nur wenn du nicht mehrere Fragmente ersetzen willst. Dann wird es lustig. ;)

Und beim nächsten Mal stelle bitte den gesamten relevanten Code ins Netz. In dem Fall den Logtrace. Danke.
 
Zurück
Oben Unten