解決在Fragment中啟動(dòng)Activity時(shí)傳遞要求碼的問(wèn)題:
首先需要指出的是Fragment有startActivityForResult方法,而Activity中也有startActivityForResult方法:二者的區(qū)分是:
Fragment中的startActivityForResult方法:
FragmentActivity中的startActivityForResult方法:
從官方的解釋中可以看出Fragment中的startActivityForResult方法是調(diào)用的是Activity中的,而FragmentActivity中的startActivityForResult方法是對(duì)Activity中的startActivityForResult進(jìn)行了重寫。所以我們調(diào)用Fragment的startActivityForResult方法,當(dāng)啟動(dòng)的Activity返回后,在FragmentActivity的onActivityResult方法會(huì)被調(diào)用但沒(méi)法獲得到正確的要求碼,如果調(diào)用FragmentActivity中的startActivityForResult方法,當(dāng)啟動(dòng)的Activity返回后Fragment的onActivityResult方法是不會(huì)被調(diào)用的。
總結(jié):
如果要在Fragment中啟動(dòng)Activity并且要求返回結(jié)果,有兩種結(jié)果方案:
第1種:調(diào)用Fragment的startActivityForResult方法,然后在Fragment的onActivityResult的方法中處理返回的要求。
第2種:在Fragment中通過(guò)getActivity()方法獲得到Fragment所在的FragmentActivity對(duì)象,調(diào)用activity對(duì)象的startActivityForResult方法啟動(dòng)Activity,然后在FragmentActivity的onActivityResult的方法中處理返回的要求。