将Activity继承这个BaseFragmentActivity
解决办法就是,将你出问题的Fragment所在的Activity,来继承这个FragmentActivity,重写onActivityResult(),即可。
/**
* 让子activity继承这个activity,Fragment去调用startActivityForResult,也可以收到onActivityResult
* Created by can on 2017/12/15.
*/
public class MyBaseFragmentActivity extends FragmentActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//获取Fragment管理类
FragmentManager manager=getSupportFragmentManager();
//遍历Fragments
for(int i=0;i<manager.getFragments().size();i++) {
Fragment fragment=manager.getFragments().get(i);
//fragment不为空就去调用onActivityResult()
if(fragment!=null)
callActivityResult(fragment,requestCode,resultCode,data);
}
}
/**
* 对所有子Fragment执行onActivityResult()
*/
private void callActivityResult(Fragment fragment,int requestCode,int resultCode,Intent data) {
//调用每个Fragment的onActivityResult()
fragment.onActivityResult(requestCode, resultCode, data);
//获取子Fragment
List<Fragment> childFragment = fragment.getChildFragmentManager().getFragments();
if(childFragment!=null)
for(Fragment f:childFragment)
if(f!=null)
callActivityResult(f, requestCode, resultCode, data);
}
}