天天看點

Activity與Fragment的onActivityResult細節

在Fragment中跳轉到另一個Activity,傳回時是調用Activity的onActivityResult呢?還是調用Fragment的onActivityResult呢?

我當然知道,隻不過我再碰到時忘記了,然後每次忘記都要從新去網上找,不如做個Test然後記錄下來。

情況一

如果在Fragment中使用的是getActivity().startActivityForResult()

那麼傳回時隻會調用Activity的onActivityResult

Activity與Fragment的onActivityResult細節

情況二

如果在Fragment中使用的是startActivityForResult()

那麼傳回時會先調用Fragment的onActivityResult,再調用Activity的onActivityResult。

關鍵是請求參數requestCode在兩個地方還不同,我測試3次,結果如下:

Activity與Fragment的onActivityResult細節
Activity與Fragment的onActivityResult細節
Activity與Fragment的onActivityResult細節

可以發現在activity中的requestCode 是 requestCode + 65536

是以如果你要在兩個地方都做操作的話注意一下這個requestCode 。

最後科普一下這個65536是什麼意思: 65535是16位二進制能表示的最大數值,也就是0xFFFF

源碼這次就不走了,真的沒時間走源碼

繼續閱讀