Android 旋转活动后的活动结果代码不正确

Android 旋转活动后的活动结果代码不正确,android,android-activity,Android,Android Activity,我有两个活动A和B。A启动活动B。在活动B中,我在按钮单击处理程序中调用setResult(RESULT_OK,intent),而不调用finish()——这是理想的行为 旋转B并按下返回键后,A的onActivityResult接收resultCode的结果_Cancelled,而不是结果_OK 我知道这是由活动B在旋转时被破坏的事实造成的。确保从B返回正确结果代码的常见做法是什么 我最初的想法是在onSaveInstanceState中保存mResultCode。将结果保存在onSaveIn

我有两个活动A和B。A启动活动B。在活动B中,我在按钮单击处理程序中调用setResult(RESULT_OK,intent),而不调用finish()——这是理想的行为

旋转B并按下返回键后,A的onActivityResult接收resultCode的结果_Cancelled,而不是结果_OK

我知道这是由活动B在旋转时被破坏的事实造成的。确保从B返回正确结果代码的常见做法是什么


我最初的想法是在onSaveInstanceState中保存mResultCode。

将结果保存在onSaveInstanceState中,然后在onRestoreInstanceState方法中再次设置结果

onRestoreInstanceState:

在启动活动时,在onStart()之后调用此方法 从先前保存的状态重新初始化,如中所示 savedInstanceState。大多数实现将只使用 onCreate(Bundle)恢复其状态,但有时 在完成所有初始化之后,在此处执行此操作非常方便 或者允许子类决定是否使用默认值 实施此方法的默认实现执行 恢复以前被冻结的任何视图状态 onSaveInstanceState(捆绑)

此方法在onStart()和onPostCreate(Bundle)之间调用


您需要在onRestoreInstanceState方法中再次设置结果我应该在onRestoreInstanceState还是onCreate中进行设置?是的,您需要在onRestoreInstanceState中进行设置谢谢-将其放入onCreate并检查bundle是否为非空似乎也可以。是的,这也可以。从先前保存的状态重新初始化活动时,onRestoreInstanceState在onStart()之后调用,