您的位置:首页 > 移动开发 > Android开发

解决Android Fragment 无法相应 onActivityResult 的问题.

2016-04-18 10:17 507 查看
1.首先在承载fragment的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);
            }
        }
    }


2.在要调用startactivityforresult方法的fragment中加入下面的办法.通过下面的方法调用startactivityforresult.

/**
* 得到根Fragment
*
* @return
*/
private Fragment getRootFragment() {
Fragment fragment = getParentFragment();
while (fragment.getParentFragment() != null) {
fragment = fragment.getParentFragment();
}
return fragment;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android Fragment