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