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

来源:互联网 发布:淘宝店铺禁止客户端 编辑:程序博客网 时间:2024/05/21 16:57
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;    }


0 0
原创粉丝点击