您的位置:首页 > 其它

Fragment 嵌套 Fragment onActivityResult 无效的解决方法

2015-09-24 11:13 555 查看
如下布局



在Activity中添加

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
FragmentManager fm = getSupportFragmentManager();
int index = requestCode >> 16;
if (index != 0) {
index--;
if (fm.getFragments() == null || index < 0
|| index >= fm.getFragments().size()) {
return;
}
Fragment frag = fm.getFragments().get(index);
if (frag == null) {
} else {
handleResult(frag, requestCode, resultCode, data);
}
return;
}

}

/**
* 递归调用,对所有子Fragement生效
*
* @param frag
* @param requestCode
* @param resultCode
* @param data
*/
private void handleResult(Fragment frag, int requestCode, int resultCode,
Intent data) {
frag.onActivityResult(requestCode & 0xffff, resultCode, data);
List<Fragment> frags = frag.getChildFragmentManager().getFragments();
if (frags != null) {
for (Fragment f : frags) {
if (f != null)
handleResult(f, requestCode, resultCode, data);
}
}
}


坑:

如果子Fragment都有onActivityResult,则都会调用,业务逻辑可能出现混乱,需要根据项目需求做特殊处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: