70

哪个更好,为什么?

这个:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);

    ...
}

或这个:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    // do not call super.onActivityResult()
    ...
}
4

6 回答 6

56

第一个更好。

它与 API 中的其他事件函数更加一致Activity,它不会花费您任何成本(您正在调用的代码目前什么都不做),这意味着您不需要记住在将来的行为时添加调用基类发生变化。

编辑

正如 Su-Au Hwang 所指出的,我对未来基类行为变化的预测已经成真!FragmentActivity 要求您在super.

于 2012-07-31T17:22:46.300 回答
27

如果您使用支持包中的 FragmentActivity(也是 SherlockFragmentActivity),则应该调用 super.onActivityResult。否则没有必要,但是我只是为了它而将它插入那里。检查 FragmentActivity 的来源(没有 onActivityResult 不为空)。

片段活动源

于 2013-07-05T09:24:55.043 回答
3

除非您的应用程序中有多个Activity依赖于它的子类,否则看起来super.onActivityResult()不需要调用,因为 的实现onActivityResult()是空的(我检查了 API 级别 15)。

于 2012-07-31T17:19:47.463 回答
3

您可以通过查看Activity的源代码自己回答这个问题。

基本上它的实现onActivityResult(...)看起来像这样......

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}

......所以什么都不做。

于 2012-07-31T17:19:57.303 回答
2

尽管默认实现似乎是空的,但在未来的更新中可能并非总是如此。我会推荐使用它

于 2012-07-31T17:21:10.477 回答
1

现在必须调用 super。它抛出“覆盖方法应该调用 super.onActivityResult”错误。添加 super 不会损害您的代码。

于 2021-03-01T15:03:07.063 回答