解決在Fragment中啟動Activity時傳遞請求碼的問題,fragmentactivity
解決在Fragment中啟動Activity時傳遞請求碼的問題:
首先需要指出的是Fragment有startActivityForResult方法,而Activity中也有startActivityForResult方法:兩者的區別是:
Fragment中的startActivityForResult方法:
FragmentActivity中的startActivityForResult方法:
從官方的解釋中可以看出Fragment中的startActivityForResult方法是調用的是Activity中的,而FragmentActivity中的startActivityForResult方法是對Activity中的startActivityForResult進行了重寫。所以我們調用Fragment的startActivityForResult方法,當啟動的Activity返回後,在FragmentActivity的onActivityResult方法會被調用但無法擷取到正確的請求碼,如果調用FragmentActivity中的startActivityForResult方法,當啟動的Activity返回後Fragment的onActivityResult方法是不會被調用的。
總結:
如果要在Fragment中啟動Activity並且要求返回結果,有兩種結果方案:
第一種:調用Fragment的startActivityForResult方法,然後在Fragment的onActivityResult的方法中處理返回的請求。
第二種:在Fragment中通過getActivity()方法擷取到Fragment所在的FragmentActivity對象,調用activity對象的startActivityForResult方法啟動Activity,然後在FragmentActivity的onActivityResult的方法中處理返回的請求。