我有两个活动A和B. A启动活动B.在活动B中,我在按钮单击处理程序中调用setResult(RESULT_OK,intent)而不调用finish() - 这是理想的行为。
旋转B并按下后,A的onActivityResult接收到resultCode的RESULT_CANCELED,而不是RESULT_OK。
我知道这是因为活动B在旋转时被破坏了。确保从B返回正确的结果代码的常见做法是什么?
我最初的想法是在onSaveInstanceState中保存mResultCode。
答案 0 :(得分:1)
将结果保存在onSaveInstanceState中,并在onRestoreInstanceState方法中再次设置结果。
onRestoreInstanceState:
当活动出现时,在onStart()之后调用此方法 从之前保存的状态重新初始化,在此处给出 savedInstanceState。大多数实现都会使用 onCreate(Bundle)恢复他们的状态,但有时候 在完成所有初始化之后,这里可以方便地完成 或者允许子类决定是否使用默认值 实现。此方法的默认实现执行 恢复之前被冻结的任何视图状态 的onSaveInstanceState(束)。
在onStart()和onPostCreate(Bundle)之间调用此方法。