前言
Fragment跳转Activity使用startActivityForResult获取返回值
如果直接获取是获取不到结果的
需要在fragment所属的activity中遍历
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//遍历调用onActivityResult
for (Fragment fragment : getSupportFragmentManager().getFragments()) {
fragment.onActivityResult(requestCode, resultCode, data);
}
}
然后在fragmen中再调用
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.e("TAG", "1111111111111");
}
打印结果证实
注意
这里还有一个很严重的坑没有提及,及父Activity的启动模式会对Fragment的onActivityResult的回调有影响。我测试发现当父Activity的启动模式设置为 SingleInstance 是完全阻塞了Fragment的onActivityResult回调,如果设置为 SingleTask 好像也有影响。
比如fragment启动相册选择图片回来就只能走activity的onActivityResult