“在 onSaveInstanceState 之后不能执行这个动作";- 为什么我会从我的活动的 onResume 方法中得到这个异常? [英] "Can not perform this action after onSaveInstanceState" - why am I getting this exception from my activity's onResume method?

查看:39
本文介绍了“在 onSaveInstanceState 之后不能执行这个动作";- 为什么我会从我的活动的 onResume 方法中得到这个异常?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的活动使用 ACTION_IMAGE_CAPTURE 意图调用相机.如果相机活动成功返回,我会在 onActivityResult 回调中设置一个标志,并根据该标志的值在我的 onResume 中启动一个片段,为捕获的图像添加标题.这似乎工作正常.

My activity invokes the camera with the ACTION_IMAGE_CAPTURE intent. If the camera activity returns succesfully, I set a flag in the onActivityResult callback, and based on the value of the flag I start a fragment in my onResume to add a caption to the image that was captured. This seems to work ok.

我刚刚从wild"那里得到一个堆栈跟踪,抱怨我在 onSaveInstanceState 被调用后试图提交一个片段事务.但是我在我的 onResume 方法中进行提交!为什么android会抱怨这个?我确实在 AndroidManifest.xml 中设置了 android:configChanges="orientation|keyboardHidden|keyboard|screenSize",因此方向更改不应触发此....

I just got a stack trace from the "wild" complaining that I was trying to commit a fragment transaction after onSaveInstanceState has been called. But I'm doing the commit in my onResume method! Why would android complain about this? I do have android:configChanges="orientation|keyboardHidden|keyboard|screenSize" set in my AndroidManifest.xml, so an orientation change should not trigger this....

这发生在运行 4.0.4 的三星 Galaxy S3 (SGH-i747) 上

This occurred on a Samsung Galaxy S3 (SGH-i747) running 4.0.4

这里是堆栈:

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
    at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1314)
    at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1325)
    at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:548)
    at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:532)
    at com.Familiar.Android.FamiliarAppV1.AddPhotosActivity2.performFragmentTransition(AddPhotosActivity2.java:278)
    at com.Familiar.Android.FamiliarAppV1.AddPhotosActivity2.switchToCaptionsFragment(AddPhotosActivity2.java:438)
    at com.Familiar.Android.FamiliarAppV1.AddPhotosActivity2.onResume(AddPhotosActivity2.java:167)
    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1158)
    at android.app.Activity.performResume(Activity.java:4544)
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2448)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2486)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1187)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4514)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
    at dalvik.system.NativeStart.main(Native Method)

感谢任何帮助或智慧.

推荐答案

认为我知道答案 - 我正在使用 v4 兼容库中的 FragmentActivity,所以我需要执行我的片段onResumeFragments 中的事务而不是 onResume.有人可以确认吗?

I think I know the answer - I'm using the FragmentActivity from v4 compatibility library, and so I need to perform my fragment transactions in onResumeFragments instead of in onResume. Can someone confirm?

这篇关于“在 onSaveInstanceState 之后不能执行这个动作";- 为什么我会从我的活动的 onResume 方法中得到这个异常?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆