天天看點

Fragment的startActivityForResult方法Fragment的startActivityForResult方法

Fragment的startActivityForResult方法

本文讨論Fragment的startActivityForResult方法:

  • Fragment的startActivityForResult方法與Activity的差別
  • Fragment調用startActivityForResult遇到的問題

startActivityForResult

該方法可以開啟一個新的Activity A,但是A的模式不能是singleTask

該方法可以擷取Activity傳回的結果,并在onActivityResult中進行處理

Fragment的Activity如果不被調用,有可能是外層的activity也實作了onActivityResult方法,但是忘記調用super.onAcitivityResult方法。

如果Fragment和Activity都調用,則會出問題

如果隻在Activity中實作onActivityResult,然後調用activity的startActivityForResult,即使調用了super.startActivityForResult,也沒有用,需要通過fragmentManager和layout找到相應的Fragment,主動調用Fragment的onActivityResult。

Fragment調用startActivityForResult遇到的問題

我在Fragment中調用startActivityForResult開啟一個二次驗證頁面時,等二次頁面處理完成傳回Fragment時,目前Fragment所在的Activity被destory掉了。我并沒有主動的調用Activity的finish方法。該錯誤在華為榮耀上複現頻率很高,在另一台三星galaxy測試機上沒出現過。想問問你有什麼想法,會不會是因為記憶體問題,導緻系統回收了Activity的資源。