[英]Is there a need to use super.onActivityResult() in onActivityResult()?
哪个更好,为什么?
这个:
@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
API中的其他事件函数更加一致,它不花费你任何费用(你正在调用的代码现在什么都不做),这意味着你不需要记住在未来的行为时添加调用基类的变化。
编辑
正如 Su-Au Hwang 所指出的,我对未来基类行为变化的预测已经实现了! FragmentActivity
要求您在super
上调用该方法。
如果您正在使用支持包(也是 SherlockFragmentActivity)中的 FragmentActivity,您应该调用 super.onActivityResult。 否则没有必要,但是我只是为了它而将它插入那里。 检查 FragmentActivity 的来源(没有 onActivityResult 不为空)。
除非您的应用程序中有多个依赖于它的Activity
子类,否则看起来不需要调用super.onActivityResult()
,因为onActivityResult()
的实现是空的(我检查了 API 级别 15)。
您可以通过查看Activity的源代码自己回答这个问题。
基本上它的onActivityResult(...)
看起来像这样...
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}
......所以什么都不做。
尽管默认实现似乎是空的,但在未来的更新中可能并非总是如此。 我会推荐使用它
现在调用 super 是强制性的。 它抛出“覆盖方法应该调用 super.onActivityResult”错误。 添加 super 不会损害您的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.