activity A创建了fragment B,在fragment B中用startactivityResult()函数跳转到activity C。
1、在B中启动C,通过 startActivityForResult(Intent,请求码);
2、在C Activity中调用 this.setResult(返回码,Intent);
3、在B中重写该方法。
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//返回码等于请求码,即说明是C传过来的。
//data就是 C传过来的Intent
}
引申:现在主流都使用 EventBus、rxjava做响应式监听。有兴趣可以去了解下。
在activity A的onActivityResult方法手动传给fragment B的onActivityResult
如果你在fragment里面这样子跳转,其实是他的父亲activity接收到返回信息。所以,你要手动在activity里面传递回去
如果你的fragment中启动activity的代码是:startActivityForResult(),那么fragment的onActivityResult肯定会收到从activityC回调回来的数据,如果没执行你先要执行的操作,那么你就检查一下你的requestCode和resultCode,有可能它们有问题;
如果你启动的是代码是:getActivity().startActivityForResult(),那么你的fragment不会收到回调,而是你的activityA的onActivityResult会收到,那你想你的fragment也能收到,你就在你的activityA的onActivityResult中调用fragment的onActivityResult方法即可,如下:fragment.onActivityResult(requestCode, resultCode, data);
从fragmentC返回的数据在Activity的onActivityResult中收到