【问题标题】:Why activity result code is diffrent then I expected为什么活动结果代码与我预期的不同
【发布时间】:2010-06-15 23:38:25
【问题描述】:

我有 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)。

每种情况下读取的“test”日志都是一样的。

【问题讨论】:

    标签: android


    【解决方案1】:

    最有可能破坏你的活动的东西会在 onPause 被调用到 RESULT_CANCELED 之后重置结果。这是有道理的,因为活动并没有愉快地结束。

    通过始终将结果代码设置为 RESULT_OK,您想达到什么目的?

    【讨论】:

    • 哦,我忘了这个问题。这并不是很有帮助,但是您的回答很可能是对问题的解释,所以我会接受您的回答。以及我如何解决问题:SharedPreferences ;)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-09-14
      • 2020-04-07
      • 2023-02-02
      • 2019-02-03
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多