解决在v4包下的Fragment 里startActivityForResult,onActivityResult返回空数据问题

场景:

MainActivity里有几个Fragment,其中MainActivity继承AppCompatActivity即继承了FragmentActivity,现在在某个Fragment里启动了FirstActivity,并需要在FirstActivity结束后返回数据给该Fragment。

做法:

在Fragment里使用startActivityForResult,然后在FirstActivity调用finish时通过setResult设置返回结果,一段操作后,发现在onActivityResult里获取不到返回值,然后。。。

解决方案:

Intent intent= new Intent(context, XXActivity.class);
//intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
this.startActivityForResult(intent, REQUEST_CODE);//切记不要getActivity()

注意:这里一定不要设置Flags,因为使用的是Fragment.this.startActivityForResult,不是getActivity().startActivityForResult,无需设置,关于launchMode,自己百度。如果设置了,这里会因为启动新的任务栈触发onActivityResult()方法执行,导致得到的数据肯定为空。

另外,如果是在MainActivity里获取数据,则使用getActivity().startActivityForResult,同样要设置Flags,切记onActivityResult里的super.onActivityResult(requestCode, resultCode, data);千万不要手贱删掉,不然是拿不到数据。

自己在这里遇到过坑,希望对遇到该问题得朋友有所帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值