代码之家  ›  专栏  ›  技术社区  ›  Boon

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

  •  1
  • Boon  · 技术社区  · 9 年前

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

    旋转B并向后按后,A的onActivityResult将收到resultCode的RESULT_CANCELED,而不是RESULT_OK。

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

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

    1 回复  |  直到 9 年前
        1
  •  1
  •   abhishesh    9 年前

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

    onRestoreInstance状态:

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

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