簡體   English   中英

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

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM