在最近使用拍照的或者相冊獲取照片時候逊谋,在使用fragment 和 fragmentActivity組合,調(diào)用startActivityForResult方法可能沒有響應(yīng)投放。
這時候需要注意幾點:
1.Fragment中直接使用startActivityForResult(); 不要使用this.getActivity().startActivityForResult();
2.Fragment依附的Activity中如果重寫了onActivityResult()方法叮贩,該方法中必須加上super.onActivityResult(requestCode, resultCode, data);( 要么在Activity中不重寫onActivityResult()方法几于,親測可用)吃引。Fragment中的onActivityResult()方法中加不加super.onActivityResult(requestCode, resultCode, data)這句代碼對結(jié)果沒有影響筹陵。
3.startActivityForResult()方法剛一調(diào)用,還沒等activity返回镊尺,onActivityResult()方法已經(jīng)執(zhí)行完了朦佩。
3.1?
①manifest中的activity設(shè)置了launchMode屬性,其值不是標(biāo)準(zhǔn)模式(standard)庐氮。
解決辦法就是把launchMode屬性去掉或者設(shè)置為標(biāo)準(zhǔn)模式语稠。
② Fragment在startActivityForResult的時候,使用了Intent.FLAG_ACTIVITY_NEW_TASK旭愧,跳轉(zhuǎn)到新的任務(wù)棧導(dǎo)致onActivityResult()被執(zhí)行。
③也可以在activity 的onActivityResult中把事件分發(fā)到每個fragment中
@Override
public voidonActivityResult(intrequestCode, intresultCode,Intent data) {
super.onActivityResult(requestCode,resultCode,data);
//將回調(diào)的傳入到fragment中去
List fragments =fm.getFragments();
for(Fragment f:fragments){
//直接分發(fā)給所有宙暇,一般會選擇分發(fā)給單個的输枯,那就直接選取當(dāng)個fragment調(diào)用onActivityResult
f.onActivityResult(requestCode,resultCode,data);
}
}