Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否需要在onActivityResult()中使用super.onActivityResult()?_Java_Android - Fatal编程技术网

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

Java 是否需要在onActivityResult()中使用super.onActivityResult()?,java,android,Java,Android,哪一个更好,为什么 这个: @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); ... } 或者这个: @Override public void onActivityResult(int requestCode, int resultCo

哪一个更好,为什么

这个:

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

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

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

基本上,
onActivityResult(…)
的实现如下所示

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

…所以什么也不做。

尽管默认实现似乎是空的,但在将来的更新中可能并不总是这样。我建议使用它,第一个更好

它与
Activity
API中的其他事件函数更为一致,它不需要任何代价(您正在调用的代码目前不起任何作用),这意味着您不需要记住在将来基类的行为发生变化时添加调用

编辑


正如苏欧黄所指出的,我对未来底层阶级行为变化的预测已经实现了
FragmentActivity
要求您调用
super
上的方法。如果您使用的是支持包中的FragmentActivity(也是SherlockFragmentActivity),则应调用super.onActivityResult。否则就没有必要了,不过我还是把它插进去吧。检查FragmentActivity的源(no-onActivityResult不为空)


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

如果您使用的是支持包中的FragmentActivity,您必须调用super,请参阅我的答案。链接已断开,如何使用
AndroidX
中的
AppCompatActivity
?它似乎使用Androidx
FragmentActivity
作为基类,其中也包含代码。