这里的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方法