java.lang.IllegalStateException(Kann nicht diese Aktion durchführen, nachdem onSaveInstanceState)

Bin ich immer diesen Fehler mit folgender Meldung in verschiedenen Szenario:

  • Aktivität zerstört wurde und
  • Kann nicht diese Aktion durchführen, nachdem onSaveInstanceState

Ich Schreibe eine app, wo Zwei Aktivitäten miteinander interagieren. Aktivität-Ein starten Aktivität-B mit Absicht. Diese Aktivität-B Klasse haben zwei Kinder-fragment. Fragment- öffentliche Methode der activity zum starten eines anderen Fragment-B.

public void beginTransaction(ID id, Bundle bundle) {

        Fragment fragment = getFragmentItem(id);

        //In case this activity was started with special instructions from an Intent,
        //pass the Intent's extras to the fragment as arguments
        fragment.setArguments(bundle);

        //Add the fragment to the 'fragment_container' FrameLayout
        fragmentManager.beginTransaction()
        .add(R.id.fragment_container, fragment).commitAllowingStateLoss();
    }

Fragment-B jeder Zeit anrufen finish() zu töten Aktivität-B damit die Kontrolle wieder zu bewegen, Aktivität-Ein wieder. Und denselben Prozess wiederholen. Nachdem ich 2-3 mal bin ich immer:

java.lang.IllegalStateException: Kann nicht diese Aktion durchführen nach
onSaveInstanceState E/AndroidRuntime( 9008):
an
android.Unterstützung.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1354)
E/AndroidRuntime( 9008):
android.Unterstützung.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1372)

so, es zu vermeiden, Folge ich https://stackoverflow.com/a/10261438/2624806 und es begann, mir zu geben

Java.lang.IllegalStateException: Aktivität zerstört wurde
E/AndroidRuntime( 9235):
android.Unterstützung.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1376)
E/AndroidRuntime( 9235):
android.Unterstützung.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)

jede Anregung, was ich hier vermisst.

HABE ES ich hab die Lösung ..es ist der Fehler passiert in der Transaktion für das hinzufügen von fragment. Ich war mit .hinzufügen stattdessen .ersetzen (meine Forderung, nicht zu pflegen stack) und verwenden commitAllowTransaction zu Begehen. Ich lese http://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html als gut und scheint das, was ich haben könnte teuer sein, aber für den normalen fragment Transaktion erwähnen zu arbeiten, um große Arbeit.

commitAllowingStateLoss() zu commit().
Wie nennst du fertig von Ihrem fragment? Mit getActivity().finish()?
Was Aufruf der Methode beginTransaction (...)? Fragment-Transaktionen & Aktivitäts-Status-Verlust "Vermeiden Sie die Durchführung von Transaktionen innerhalb von asynchronen callback-Methoden."
Danke, @Mdlc @ anderson_acs ich nicht schreiben expliziten code zu beenden Fragment, Fragment Aufruf der öffentlichen Methode beginTransaction() zu starten, ein weiteres fragment, das ersetzen der vorhandenen fragment. jede Anregung!
Da Sie entfernen möchten, Fragment-und add Fragment-B, die Sie verwenden müssen FragmentTransaction.replace statt FragmentTransaction.add. Versuchen Sie, und lassen Sie mich wissen, ob es hilft.

InformationsquelleAutor CoDe | 2014-08-25

Schreibe einen Kommentar