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
?它似乎使用AndroidxFragmentActivity
作为基类,其中也包含代码。