关闭

调用startActivityForResult后,onActivityResult立刻响应,返回当前页

455人阅读 评论(0) 收藏 举报

原文地址:http://www.aichengxu.com/view/42668

调用startActivityForResult后,onActivityResult立刻响应,返回当前页,有需要的朋友可以参考下。


这个问题浪费了我很多时间,参考了网上的一些博客,找到了原因,在此感谢那些分享知识的好心人,感谢你们!

调用startActivityForResult后,onActivityResult立刻响应,原因如下:

原因是在AndroidManifest.xml 中跳转到的页面我自己设置了android:launchMode="singleTask",因为需要传值的 Activity 不容许设置该属性或者 singleInstance,或只能设为标准模式,不然将在 startActivityForResult()后直接调用 onActivityResult()。
解决办法:去掉跳转到的页面的lanchMode属性即可。
另外,requestCode值必须要大于等于0,不然,startActivityForResult就变成了 startactivity。


找到的一些资料:(摘抄自http://www.byywee.com/page/M0/S776/776928.html)

从SDK我们可以看到如下深奥的解释:http://developer.android.com/guide/topics/manifest/activity-element.html#lmode
The other modes — singleTask and singleInstance — are not appropriate for mostapplications, since they result in an interaction model that is likely to be unfamiliar to users and is very different from most other applications.
从柯元旦的《Android 内核剖析》的第十章“Ams内部原理“10.1.3中有这样的一段话:请注意:SINGLE_TASK标识以及SINGLE_INSTANCE两个标识必须在r.result==0的条件中,即这两个标识只能用在startActivity()的方法中,而不能使用在startActivityForResult方法中。因为从Task的角度看,Android认为不同Task之间的Activity是不能传递数据的,所以不能使用NEW_TASK标识,但还是要调用forResult方法。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:21063次
    • 积分:299
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:45篇
    • 译文:0篇
    • 评论:0条