聆听-花语
2016-11-15 06:29
采纳率: 34.8%
浏览 2.2k

fragment 中 onActivityResult怎么不执行?

activity A创建了fragment B,在fragment B中用startactivityResult()函数跳转到activity C。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • Abrazen_zz 2016-11-15 09:43
    已采纳

    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做响应式监听。有兴趣可以去了解下。

    点赞 评论
  • flk_123 2016-11-15 06:34

    在activity A的onActivityResult方法手动传给fragment B的onActivityResult

    点赞 评论
  • viewgroup 2016-11-15 08:17

    如果你在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);

    点赞 评论
  • 开开_心心_敲代码 2016-11-17 03:26

    从fragmentC返回的数据在Activity的onActivityResult中收到

    点赞 评论

相关推荐 更多相似问题