2017-06-02 1 views
0

Ich benutze SupportMapFragment und es stürzt mit illegaler Statusausnahme beim Commit ab. Hier ist der Code unter:Kann diese Aktion nach onSaveInstanceState auf setMap nicht ausführen

mSupportMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.branch_mp_view); 
     if (mSupportMapFragment == null) { 
      FragmentManager fragmentManager = getChildFragmentManager(); 
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
      mSupportMapFragment = SupportMapFragment.newInstance(); 
      fragmentTransaction.replace(R.id.branch_mp_view, mSupportMapFragment).commit(); 
     } 

     if (mSupportMapFragment != null) { 
      mSupportMapFragment.getMapAsync(this); 
     } 

Logs:

Fatal Exception: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 
     at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1538) 
     at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1556) 
     at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:696) 
     at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:662) 
     at com.android.myapp.ui.branch_master.MyFragment.setMap(MyFragment.java:1346) 
     at com.android.myapp.ui.branch_master.MyFragment.handleSuccessBranchDetail(MyFragment.java:3267) 
     at com.android.myapp.ui.branch_master.MyFragment$1.onResponse$230aa0b4(MyFragment.java:200) 
     at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68) 
     at android.os.Handler.handleCallback(Handler.java:815) 
     at android.os.Handler.dispatchMessage(Handler.java:104) 
     at android.os.Looper.loop(Looper.java:194) 
     at android.app.ActivityThread.main(ActivityThread.java:5637) 
     at java.lang.reflect.Method.invoke(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) 

Pls Hilfe, ich bin nicht in der Lage, es zu reproduzieren, aber ich in crashlytics diesen Absturz zu sehen bin erscheint hin und wieder.

+0

Mögliches Duplikat von [java.lang.IllegalStateException: Diese Aktion kann nach onSaveInstanceState nicht ausgeführt werden] (https://stackoverflow.com/questions/14177781/java-lang-illegalstateexception-can-not-perform-this-action- nach-onsaveinstanc) – azizbekian

Antwort

0

Es sieht so aus, als ob Sie versuchen, das mapFragment nach Abschluss eines apicalls anzuzeigen. In der Zwischenzeit könnte der Nutzer die App bereits geschlossen oder zu einem anderen Bildschirm gewechselt haben. Wenn dies passiert, wird Ihre Aktivität oder Fragment angehalten. Nach dem Anhalten ist es nicht mehr möglich, Fragmente zu ersetzen. Sie können dies verhindern, indem Sie prüfen, ob Ihr AP noch im Vordergrund ist. Wenn beispielsweise onResume aufgerufen wird, können Sie einen booleschen Namen namens "Vordergrund" auf "true" und "false" setzen, wenn "onPause" aufgerufen wird. Sie können diese Variable jetzt verwenden, um zu sehen, ob Ihr Fragment angezeigt werden kann.

Verwandte Themen