Android - Impossible de détruire l'activité après l'arrivée, causée par l'exception IllegalStateException: vous ne Pouvez pas effectuer cette action après onSaveInstanceState

J'ai une activité dans mon application avec les 3 fragments. Quand un bouton est poussé sur le premier, une méthode est appelée dans l'Activité qui fait de la pertinence des trucs et puis les appels finish().

Ce qui déclenche la onPause() sur le fragment, qui n'a plus de pertinence trucs et puis les appels super.onPause().

L'application des charges de l'Activité ancienne et elle s'est (logiquement la suite de l'affichage de la pile), et tout à coup se bloque avec l'exception suivante lorsque onDestroyView() est appelée sur le 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

L'erreur semble se produire lorsque vous essayez de supprimer un MapFragment de la principale Fragment. Je sais que vous n'êtes pas censé avoir des fragments dans des fragments, mais le code a fonctionné dans le passé et il n'y a pas moyen de contourner cela de toute façon.

@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();
}

J'ai regardé autour pour un correctif, ici, sur la DONC déjà (notamment l'obtention de "l'exception IllegalStateException: vous ne Pouvez pas effectuer cette action après onSaveInstanceState"), mais aucun d'entre eux étaient applicables à mon problème actuel.

avez-vous fait fait sûr de son exécution avant que le savedinstancestate?

OriginalL'auteur Vindicator | 2013-07-17