main下的Fragment跳转到Activity后 onActivityResult未执行

这里的Fragment并未嵌套 为什么会接收不到呢

你在嵌套fragment 的Activity 打印日志看看有没有调用onActivityResult

你要看看跳转后的activity有没有调用setResult,没有代码不好具体帮你分析

你这个onActivityResult写在Fragment里面吗?
v4.Fragment里面这个方法的注释:
/**
* Receive the result from a previous call to
* {@link #startActivityForResult(Intent, int)}. This follows the
* related Activity API as described there in
* {@link Activity#onActivityResult(int, int, Intent)}.

那么main下看看onActivityResult方法,是不是被复写了,是不是执行了,可能mainActivity去掉了super.onActivityResult,或者被先拦截了

看FragmentAcitivity的源码
/**
* Dispatch incoming result to the correct fragment.
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
mFragments.noteStateNotSaved();
int requestIndex = requestCode>>16;
if (requestIndex != 0) {
requestIndex--;

        String who = mPendingFragmentActivityResults.get(requestIndex);
        mPendingFragmentActivityResults.remove(requestIndex);
        if (who == null) {
            Log.w(TAG, "Activity result delivered for unknown Fragment.");
            return;
        }
        Fragment targetFragment = mFragments.findFragmentByWho(who);
        if (targetFragment == null) {
            Log.w(TAG, "Activity result no fragment exists for who: " + who);
        } else {
            targetFragment.onActivityResult(requestCode&0xffff, resultCode, data);
        }
        return;
    }

    super.onActivityResult(requestCode, resultCode, data);
}

    肯定是先Acivitity接收再传给targetFragment的,如果Acitivity的方法被覆盖了,有可能传不到里面去的

    关于setResult,不调用的话,是自动setResult为Result.Cancel的

activity类和fragment类都有startActivityForResult方法,你调用的是activity类的startActivityForResult方法,还是fragment类的startActivityForResult方法呢,如果你要让fragment的onActivityResult执行,你要调用fragment的startActivityForResult方法,而不是activity的startActivityForResult方法