2012-01-05 19 views
12

'dan sonra gerçekleştiremiyorum. Etkinliğimdeki diğer şeylerle birlikte parçaları ele alma konusunda hala net değil. Aşağıdaki Yığın izleme:Android: Bu eylemi, onSaveInstanceState

// Pop fragments from second pane 
    private void popStack() { 
     if (mDualPane && mBottomId >= 0) { 
      mViewTab.getTabHelper().tabGetFragManager().popBackStack(mBottomId, 
        FragmentManager.POP_BACK_STACK_INCLUSIVE); 
      mBottomId = -1; 
     } 
    } 

: o benim bakış bölmelerden birinde herhangi yığılmış parçaları dışarı temizliyorum nerede bu işlev içinde popBackStack etmek benim kararım gibi

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { (has extras) }} to activity {com.ghcssoftware.gedstar/com.ghcssoftware.gedstar.GedStar}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 
at android.app.ActivityThread.deliverResults(ActivityThread.java:2747) 
at android.app.ActivityThread.handleSendResult(ActivityThread.java:2790) 
at android.app.ActivityThread.access$2000(ActivityThread.java:122) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1035) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:132) 
at android.app.ActivityThread.main(ActivityThread.java:4028) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:491) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 
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:1299) 
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1310) 
**at android.support.v4.app.FragmentManagerImpl.popBackStack(FragmentManager.java:471) 
at com.ghcssoftware.gedstar.PersonTab$PersonTabFrag.popStack(PersonTab.java:157)** 
at com.ghcssoftware.gedstar.PersonTab$PersonTabFrag.fillData(PersonTab.java:165) 
at com.ghcssoftware.gedstar.ViewTab.fillData(ViewTab.java:96) 
at com.ghcssoftware.gedstar.GedStar.fillData(GedStar.java:589) 
at com.ghcssoftware.gedstar.GedStar.onActivityResult(GedStar.java:514) 
at android.app.Activity.dispatchActivityResult(Activity.java:4541) 
at android.app.ActivityThread.deliverResults(ActivityThread.java:2743) 

Yani bu görünüyor Esasen, "onSaveInstanceState'den sonra" bunun neden oluştuğunu veya gerçekten de gerçekleşiyorsa emin değilim. Herhangi bir açıklama var mı? PopBackStackImatediate bir fark yaratır mı?

Değeri için, testlerimde koşulları yeniden oluşturamadım, bu nedenle yalnızca raporlarda gösteriliyor.

cevap

15

İzlemeye bakmaktan belli olan sorun, onResume'den önce çağrılan onActivityResult yöntemimde koddan popStack çağırıyor olmamızdır. Aramayı onResume'ye taşıdım ve düzeltdim.

+0

Aynı sorunu yaşıyorum ve kodumda onResume() ' – noloman

+0

Bu doğru bir çözüm değil. –

+0

@metalurgus Bu 3 yaşında. Android'in sonraki bir sürümünde aynı veya benzer bir sorun yaşıyorsanız, yeni bir soru göndermeniz gerekebilir. Bu soruya bir bağlantı verin ve sorunuzu bir kopya olarak kapamaktan kaçınmak için durumunuzun nasıl farklı olduğunu açıklayın. –