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

来源:互联网 发布:导航仪端口 编辑:程序博客网 时间:2024/06/05 01:26

原文地址: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
原创粉丝点击