在實際開發過程中,發現了一些有趣的故事,記錄一下以便備查,在我們打開新的activity時候有時候需要回傳數據到上個頁面,兒這個頁面有可能是activity,也可能在activity中嵌套fragment。這個時候onActivityResult的回調方法就不一定好使,經過查證,activity和fragment中都擁有開啟一個activity的能力,直接用activity調用startActivityForResult()方法是沒有問題,這里不再贅述,講講fragment調用。
在fragment調用activity.startActivityForResult()方法會執行activity的onActivityResult()方法,不會執行fragment的,如果調用fragment.startActivityForResult()方法就會執行fragment中的onActivityResult()方法,如果你包裹fragment的activity中同樣也使用了onActivityResult()方法,那么請記住,一定不能刪掉關鍵代碼super.onActivityResult(requestCode, resultCode, data);因為fragment之所以能夠回調到onActivityResult()方法,是因為在activity的onActivityResult()方法中對fragment做了處理,如果沒有這句就不會執行fragment中的onActivityResult()方法。也就是說調用fragment.startActivityForResult()方法,會先執行activity的onActivityResult()方法,然后通過super.onActivityResult(requestCode, resultCode, data)方法判斷是否要傳遞給fragment。
注意 :onActivityResult方法會在onresume()方法前面執行。