Android - Nicht in der Lage zu zerstören Aktivität nach beenden, verursacht durch IllegalStateException: Kann nicht diese Aktion durchführen, nachdem onSaveInstanceState

Habe ich eine Tätigkeit in meiner app mit 3 Fragmenten. Wenn eine Taste gedrückt wird auf die erste Methode wird aufgerufen, in der Handlung, die einige irrelevante Sachen und ruft dann finish().

Dies löst onPause() auf das fragment, das nicht irrelevant Sachen und ruft dann super.onPause().

Die app lädt dann die alt-Aktivität kam es an (logisch nach der Ansicht stack), und plötzlich stürzt mit folgender Ausnahme, wenn onDestroyView() wird aufgerufen, auf dem Fragment:

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to destroy activity {be.niteowl.niteowl.debug/be.niteowl.niteowl.views.activities.VenueActivity}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:2793)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:2811)
at android.app.ActivityThread.access$2100(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:972)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3835)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1327)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1338)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
at be.niteowl.niteowl.views.activities.TrackFragment.onDestroyView(TrackFragment.java:161)
at android.support.v4.app.Fragment.performDestroyView(Fragment.java:1665)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:980)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070)
at android.support.v4.app.FragmentManagerImpl.dispatchDestroy(FragmentManager.java:1898)
at android.support.v4.app.FragmentActivity.onDestroy(FragmentActivity.java:324)
at com.actionbarsherlock.app.SherlockFragmentActivity.onDestroy(SherlockFragmentActivity.java:88)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:2780)
... 11 more

Der Fehler scheint zu passieren, wenn Sie versuchen, zu entfernen MapFragment aus dem main-Fragment. Ich weiß, dass Sie nicht haben soll Fragmente in Fragmenten, aber der code war in der Vergangenheit und es gibt keine Möglichkeit um ihn herum sowieso.

@Override
public void onDestroyView() {
    SupportMapFragment f = (SupportMapFragment) activity.getSupportFragmentManager().findFragmentById(R.id.fragment_map);
    if (f != null) {
        activity.getSupportFragmentManager().beginTransaction().remove(f).commit();
    }
    super.onDestroyView();
}

Ich schaute mich um für ein Update hier auf der SO schon (vor allem erste Ausnahme "IllegalStateException: Kann nicht diese Aktion durchführen, nachdem onSaveInstanceState"), aber keiner von Ihnen waren anwendbar zu meinem aktuellen problem.

haben Sie sich eigentlich sicher sein, bevor die savedinstancestate?

InformationsquelleAutor Vindicator | 2013-07-17

Schreibe einen Kommentar