1.单层Fragment的时候,用 startActivityForResult(intent,int i);
而不是getActivity().startActivityForResult(intent,int i);
有可能会出现Fragment中的onActivityResult()接收不到,则应重写Activity的onActivityResult方法,其中获取子Fragment,并调用其方法:
<span style="font-size:18px;"> @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
List<Fragment> fragments = this.getSupportFragmentManager().getFragments();
if (fragments != null) {
for (Fragment fragment : fragments) {
fragment.onActivityResult(requestCode, resultCode, data);
}
}
}</span>
2.当使用嵌套(neste)Fragment的时候,如果想在内层Fragment调用startActivityForResult(),
应该加上getParentFragment(),即
getParentFragment().startActivityForResult().
然后在上层Fragment的onActivityResult()中这样写:
List<Fragment> fragments = getChildFragmentManager().getFragments(); if (fragments != null) { for (Fragment fragment : fragments) { fragment.onActivityResult(requestCode, resultCode, data); } }
要注意使用的fragment,上述fragment都在v4包中。