Android中常常需要用到startActivityForResult()
方法來獲得Activity回執信息的場景。但有時不注意就會導致onActivityResult()
不被調用,或者調用時機錯誤。以下總結開發中遇到過的兩種情況:
Fragment
在fragment作爲調用者使用時需要注意,Fragment有自己的一套API而不是通過其父類API進行調用的,因此調用自己的API時需要重寫自己的回調方法。使用getActivity.startActivityForResult
會回調到附屬Activity的回調方法中。
NewTask
有時候我們在啓動Activity時會用到NewTask的啓動模式,因爲啓動是在新的棧中,因此無法跨棧進行result回調。採用這種方式時onActivityResult
會在跳轉過去後立即調用,而不是在返回時調用。如果需要使用startActvitiyForResult
主要不是使用新棧模式。