[英]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.