2012-01-05 25 views
12

Tôi vẫn chưa rõ ràng về xử lý các đoạn cùng với những thứ khác đang diễn ra trong hoạt động của mình. Sau đây là stack trace:Android: Không thể thực hiện tác vụ này sau khi onSaveInstanceState

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) 

Vì vậy, đây có vẻ như nó là cuộc gọi của tôi để popBackStack trong chức năng này, nơi tôi đang làm sạch bất kỳ mảnh vỡ xếp chồng lên nhau trong một trong panes quan điểm của tôi:

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

Chủ yếu là tôi không chắc chắn tại sao bất kỳ điều này xảy ra "sau khi onSaveInstanceState" đã được gọi, hoặc nếu đó là những gì thực sự xảy ra. Bất kỳ lời giải thích nào có thể? PopBackStackImmediate có tạo sự khác biệt không?

Đối với những gì đáng giá, tôi không thể tạo lại các trường hợp trong thử nghiệm của mình, vì vậy nó chỉ hiển thị trong báo cáo.

Trả lời

15

Vấn đề, hiển nhiên khi nhìn vào dấu vết, là tôi đã gọi popStack từ mã trong phương thức onActivityResult của tôi, được gọi trước onResume. Tôi đã chuyển cuộc gọi đến onResume và sửa nó.

+0

Tôi gặp sự cố tương tự và mã của tôi nằm trong 'onResume()' – noloman

+0

Đây không phải là giải pháp đúng. –

+0

@metalurgus Đây là 3 tuổi. Nếu bạn gặp sự cố tương tự hoặc tương tự trong phiên bản Android mới hơn, bạn có thể cần phải đăng câu hỏi mới. Liên kết đến câu hỏi này và giải thích cách tình hình của bạn khác nhau để tránh việc câu hỏi của bạn bị đóng là trùng lặp. –

Các vấn đề liên quan