是否需要在onActivityResult()中使用super.onActivityResult()?

时间:2012-07-31 17:05:40

标签: java android

哪一个更好,为什么?

这一个:

@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()
    ...
}

6 个答案:

答案 0 :(得分:41)

第一个更好。

它与Activity API中的其他事件函数更加一致,它不需要任何费用(您调用的代码目前没有任何功能),这意味着您无需记住添加在基类的行为发生变化时调用。

修改

正如Su-Au Hwang指出的那样,我对未来基类行为的预测已经成真! FragmentActivity 要求您在super上调用该方法。

答案 1 :(得分:24)

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

FragmentActivity source

答案 2 :(得分:3)

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

答案 3 :(得分:2)

您可以通过查看Activity的源代码来自行回答。

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

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

......所以什么也没做。

答案 4 :(得分:2)

虽然默认实现似乎是空的,但未来的更新可能并非总是如此。我建议使用它

答案 5 :(得分:1)

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