您的位置:首页 > 其它

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

2015-11-18 12:03 726 查看
原文地址: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方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: