为什么活动结果代码与我预期的不同

时间:2010-06-15 23:38:26

标签: android

我有2项活动。在儿童活动中,我在onPause()中添加了类似的内容:

if (isFinishing()) {
 final Intent intent = new Intent();
 intent.putExtra(SOME_DATA, value);

 setResult(RESULT_OK, intent);
 Log.i("test", "Result set to RESULT_OK");
}

在父活动中,当子活动被销毁时我检查resultCode,这是我注意到的:

  1. 如果我通过某些动作破坏子活动(在某些情况下我调用finish()),则resultCode为RESULT_OK
  2. 但是当我按下返回键(我只在模拟器中工作,因此它的ESC)杀死活动时,那么在父级onActivityResult方法中读取的resultCode等于0(RESULT_CANCELD)。
  3. 每个案例中的“测试”日志读取都是一样的。

2 个答案:

答案 0 :(得分:2)

在onPause被调用到RESULT_CANCELED之后,很可能是破坏你的活动的东西会重置结果。这是有道理的,因为活动快乐地完成。

您要通过始终将结果代码设置为RESULT_OK来完成什么?

答案 1 :(得分:2)

您不必在onPause方法中设置结果代码。您可以在获取数据的那一刻设置它。只需在每次要传回第一个活动的数据发生变化时设置结果代码,然后以正确的方式返回到调用活动。