startActivityForResult 的不同表現(xiàn)

近日捋了一下 startActivityForResult 的返回值調(diào)用問題,突然發(fā)現(xiàn)問題還挺多,所以在這里記錄一下現(xiàn)象,原因就不查了,感興趣的可以去查查原因。


測(cè)試情況

第一種情況:

發(fā)起頁面 :在Activity或者Fragment 調(diào)用 startActivityForResult
目標(biāo)頁面:?jiǎn)?dòng)模式為 singleTask
表現(xiàn)形式:

  • 5.0以下系統(tǒng) onActivitResult 立即被回調(diào),且 resultCodeRESULT_CANCEL
    (參考 :http://blog.csdn.net/sodino/article/details/22101881)
  • 5.0及以上系統(tǒng)已經(jīng)修復(fù)這個(gè)問題,但具體表現(xiàn)需具體分析。

第二種情況:

發(fā)起頁面 :在Activity 調(diào)用 startActivityForResult
表現(xiàn)形式: onActivitResult 正常被回調(diào),且 requestCoderesultCode 均正常。


第三種情況:

發(fā)起頁面:在 v4.app.Fragment 調(diào)用 startActivityForResult
表現(xiàn)形式:

  • 如果 v4.app.Fragment 所在的 Activity 重寫了 onActivitResult 方法,且方法中執(zhí)行 super.onActivityResult(requestCode, resultCode, data);
    先調(diào)用 v4.app.FragmentonActivitResult ,且 requestCoderesultCode 均正常。再調(diào)用 ActivityonActivitResult 方法,resultCode 正常,requestCode 為隨機(jī)數(shù)。
  • 如果 v4.app.Fragment 所在的 Activity 重寫了 onActivitResult 方法,但是方法沒有執(zhí)行 super.onActivityResult(requestCode, resultCode, data); ,則不調(diào)用 v4.app.Fragment
    onActivitResult ,只調(diào)用 ActivityonActivitResult 方法,resultCode 正常,requestCode 為隨機(jī)數(shù)。
  • 如果 v4.app.Fragment 所在的 Activity 未重寫 onActivitResult 方法,則調(diào)用 v4.app.FragmentonActivitResult ,且 requestCoderesultCode 均正常。

第四種情況:

發(fā)起頁面:在 android.app.Fragment 調(diào)用 startActivityForResult
表現(xiàn)形式:只在 android.app.Fragment 回調(diào) onActivitResult,且 requestCoderesultCode 均正常。與其所在的 Activity 是否重寫 onActivitResult 無關(guān)。


總結(jié)

1,如果想在 Fragment 中回調(diào) onActivitResult ,則需要調(diào)用 FragmentstartActivityForResult。
2,不要?jiǎng)h除 ActivityonActivitResult 的 super 方法。
3,在 onActivitResult 處理結(jié)果時(shí),盡量根據(jù) requestCoderesultCode 共同判斷,防止意外情況出現(xiàn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容