博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在非activity类调用startActivityForResult
阅读量:6963 次
发布时间:2019-06-27

本文共 918 字,大约阅读时间需要 3 分钟。

对于这个问题,今天折腾了一下午,不是说我不懂得怎么调用,而是我用了看似正确的调用方式,而其实这是一个坑。

我用了下面这种方式:

((Activity) mContext).startActivityForResult

用这种方式是正确的,必须要将context转换为Activity。

但是由于我是在一个特殊的场景里面使用的,导致activity的onActivityResult没有被回调。

 

接下来说说我的场景:

我在MainActivity里面创建了一个DialogActivity,在DialogActivity里面调用工具类utils的start()方法,该方法里面的语句就是((Activity) mContext).startActivityForResult,而DialogActivity里面的onActivityResult没有被回调。

 

调试了半天,发现DialogActivity传进utils的start方法的context是属于MainActivity的,因为DialogActivity在MainActivity里面启动的。这么说来,相当于是MainActivity调用了startActivityForResult,应该是MainAcvtivity的onActivityResult会被回调,可是结果也不会。

 

原来MainAcvtivity与要启动的Activity之间还隔着一个DialogActivity,返回的时候是返回到DialogActivity的,因此MainActivity的onActivityResult也不会被回调。

 

解决方法,不要传context去调用,传activity

总结:((Activity) mContext).startActivityForResult,context属于哪个Activity,那么便是哪个activity调用该方法,并且想要onActivityResult获得回调,两个Activity之间不能隔着其他Activity。

 

尊重劳动成果,转载请标明出处:

转载于:https://www.cnblogs.com/tangZH/p/8575836.html

你可能感兴趣的文章
操作用户 简介
查看>>
JDK工具(一)–Java编译器javac
查看>>
Cassandra数据模型设计
查看>>
JDBC Java SQL Server 连接
查看>>
Maven部署Struts2环境详解
查看>>
日常记录-js篇
查看>>
使用 Java Native Interface 的最佳实践
查看>>
关于 Perl 与 Python 的起源和特点
查看>>
taobao npm registry
查看>>
jenkins------结合maven将svn项目自动部署到tomcat下
查看>>
我的友情链接
查看>>
MySQL二进制包使用mysql_upgrade版本更新升级MySQL 5.7
查看>>
css3文本溢出显示控制
查看>>
MySQL 可优化的一些参数详解
查看>>
JAVA中的内存映射文件
查看>>
磁盘管理1(磁盘碎片、磁盘格式转换)
查看>>
H5本地存储一
查看>>
LinuxMBR修复,引导修复。
查看>>
2016年上半年系统集成中项3月28日作业
查看>>
Redhat6.5(红帽6.5)配置yum本地源
查看>>