startActivityForResult注意点

前几天有个关于activity跳转的很小的需求让我做,自己感叹太简单了,就很马虎的写完了代码,结果测试一测测出那么多bug,搞得自己极度怀疑自己了,这么简单的个东西竟把我折腾了这么久,差点就开始怀疑人生了。看来任何一个小需求,不管自己认为它多么简单都不要马虎轻率地对待,都要仔细认真的做好。正所谓“一屋不扫,何以扫天下”,不要眼高手低。
是关于在一个fragment里面跳转到另外一个activity的。下面列出几个知识点:

1.singleTask情况:

待启动Activity的LauchMode若设置为了singleTask,则调用startActivityForResult进入到目标activity,来源Activity或fragment的onActivityResult立刻被调到了,而不是在其finish后调到。(不管是在activity里面还是fragment里面调用startActivtyForResult)

2.fragment的startActivityForResult与getActivity.startActivityForResult区别:

1>在fragment里面调用startActivityForResult会响应到寄宿Activity自身的onActivityResult里面去.
2>在fragment里面调用getActivity.startActivityForResult只会调到寄宿的activity的onActivityResult里面去,不会掉到自身的onActivityResult.

3.activity和fragment的requestCode的问题:

1>在fragment里面使用startActivityForResult时,寄宿activity得onActivityResult里面的requestCode不是传进去的requestCode,被android系统给传了另外的一个值。自身fragment的onActivityResult里面的requestCode是当初传进去的那个值.
2>在fragment里使用getActivityForResult时,寄宿activity的onActivityResult的requestCode就是当初传进去的那个值。

4.resultCode的情况:

在目标Activity 调用finish之前,若不设置setResult(RESULT_OK);则默认为RESULT_CANCELED,此处注意在onActivityResult收到RESULT_CANCELED return不处理时,要考虑是否将要处理的设置了setResult(RESULT_OK);

后记:刚毕业那回,一个人在上海也没什么朋友,周末自己呆在家里觉得郁闷的快要死掉了,经历了2年的磨练,慢慢习惯了一个人的生活,没人说话又怎么了,一整天不出门又怎么了,自己一样可以过得很好,依然能找到自己的存在,而且还能自己真正的独处想点事情。习惯真的是个可怕的东西,原来以为自己忍受不了的东西,时间久了,慢慢竟也习惯了,还能乐在其中。时间能改变一切!

    原文作者:幸福的程序媛
    原文地址: https://www.jianshu.com/p/095797431281
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞