调用startactivityforresult后,onactivityresult响应
来源:互联网 发布:mac 邮件登录企业邮箱 编辑:程序博客网 时间:2024/06/05 23:52
这个问题浪费了我很多时间,参考了网上的一些博客,找到了原因,在此感谢那些分享知识的人! 调用startActivityForResult后,onActivityResult立刻响应,原因如下: 原因是在AndroidManifest.xml 中跳转到的页面我自己设置了android:launchMode="singleTask",因为需要传值的 Activity 不容许设置该属性或者 singleInstance,或只能设为标准模式,不然将在 startActivityForResult()后直接调用 onActivityResult()。解决办法:去掉跳转到的页面的lanchMode属性即可。另外,requestCode值必须要大于等于0,不然,startActivityForResult就变成了 startactivity。
请注意:SINGLE_TASK标识以及SINGLE_INSTANCE两个标识必 须在r.result==0的条件中,即这两个标识只能用在startActivity()的方法中,而不能使用在startActivityForResult方法中。因为从Task的角度看,Android认为不同Task之间的Activity是不能传递数据 的,所以不能使用NEW_TASK标识,但还是要调用forResult方法。当然这种说法很无赖。就像数学里面提到的公理一样,既然是公认的规定,还是要达成共识。笔者当然是不甘心的。于是又找到了一篇文章,解释的较为清楚。如图:假设当前的应用程序存在两个栈:其中一个直接显示在屏幕上负责与用户完成交互,叫BackStack;另一个是隐藏在后台的background task,且位于该栈顶的Activity Y的启动模式被设置为singleTask。如果Activity 2中调用background Task中已经启动过的Activity Y,则background Task内占据屏幕并且将该Task下所有的栈保留当前的栈位置和顺序push进back Task形成新的结构。在Activity界面按返回键,则Activity Y出栈,Activity X占据屏幕。因此可见,由Activity2调用的Activity Y,但返回键后,回退显示的是Activity X。所以,即使在Activity执行setResult()函数,Activity2也是无法接收到的。
由于这种现象的存在,所以android系统处于某种保护机制,发现将要跳转的Activity的启动模式是singleTask时,若需要执行onActivityResult()函数则立即执行。这样就好理解多了
- 调用startactivityforresult后,onactivityresult响应
- 调用startActivityForResult后,onActivityResult无响应
- 调用startActivityForResult后,onActivityResult为什么立刻响应
- 调用startActivityForResult后,onActivityResult为什么立刻响应
- 调用startactivityforresult后,onactivityresult立刻响应问题
- 调用startactivityforresult后,onactivityresult立刻响应
- 解决调用startactivityforresult后,onactivityresult立刻响应
- 调用startActivityForResult后,onActivityResult无响应的题目
- 调用startActivityForResult后,onActivityResult立刻响应,返回当前页
- Android初学习 - 调用startActivityForResult后,onActivityResult为什么立刻响应
- [转]调用startActivityForResult后,onActivityResult为什么立刻响应
- 调用startActivityForResult,onActivityResult无响应?
- 调用startActivityForResult后onActivityResult立刻响应,返回当前页onActivityResult不响应的问题
- 调用startActivityForResult后onActivityResult立刻响应,返回当前页onActivityResult不响应的问题
- 调用startActivityForResult后,onActivityResult立刻响应,返回当前页onActivityResult不响应的问题
- 调用startActivityForResult后onActivityResult立刻响应,返回当前页onActivityResult不响应的问题
- 调用startActivityForResult后onActivityResult立刻响应,返回当前页onActivityResult不响应的问题
- 调用startActivityForResult后onActivityResult立刻响应,返回当前页onActivityResult不响应的问题
- 常用排序算法之JavaScript实现
- Linux下部署项目二(安装Mysql)
- kibana更换地图
- 使用IntelliJ IDEA开发SpringMVC网站(四)用户管理
- oracle自定义函数示例--实现时间和数字的来回转换
- 调用startactivityforresult后,onactivityresult响应
- PHP防注入的函数
- 栈(堆栈)与堆的比较
- 开始C语言的学习。第一天
- bash脚本实例-linux性能数据清洗-1
- Redis的调用
- html单词汇总
- 初学Java,toString
- Umbraco 官方技术文档 翻译 九、 Rendering content 呈现内容