Fragment中onActivityResult不响应

来源:互联网 发布:变频器仿真软件下载 编辑:程序博客网 时间:2024/04/29 21:31

开发中遇到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会直接把该消息阻塞的

0 0
原创粉丝点击