Fragment中onActivityResult不响应

开发中遇到Fragment中onActivityResult不响应的问题。

第一种情况:

fragment.java 中

getActivity().startActivityForResult(intent,1001);
<span style="font-family: Arial, Verdana, Geneva, Helvetica, sans-serif; line-height: 26px;">?这种情况下fragmentActivity下的onActivityResult方法被调用。fragment中的onActivityResult不会被调用。</span>

第二种情况:

fragment.java 中

startActivityForResult(intent,1001);

?这种情况下fragmentActivity下的onActivityResult方法被调用,同时注意的是如果fragmentActivity下的onActivityResult方法调用了super.onActivityResult方法,fragment中的onActivityResult也会被调用。

?

最后,一般情况下使用第二种情况,且不重载fragmentActivity下的onActivityResult方法,除非fragment和activity有互动。出现标题现象的原因大多是重载fragmentActivity下的onActivityResult方法但是没有调用super.onActivityResult方法



 不少同学说处理方法是:

        在与Fragment绑定的FragmentActivity中重写onActivityResult方法。

       返回的result先传至Fragment的host FragmentActiivity。

        FragementActivity的onActivityResult函数必须调用 super.onActiivtyResult()。

        super.onActiivtyResult会将未被处理的result消息继续传给其host的 Fragement的onActiivtyResult。

        如果你fragment继承了父类fragment你要将 super.onActiivtyResult()放到最后面(见下图)


  但是都不管用!

       解决方法就是在Fragment中直接调用startActivityForResult()方法,而不是调用 getActivity().startActivityForResult()。(见下图)

      

    这样就可以实现fragment与activity之前的跳转和传值了!

      另外程序中有tabbar的情况也特殊处理,因为tabbar会直接把该消息阻塞的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谭祖爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值