在非activity类调用startActivityForResult
对于这个问题,今天折腾了一下午,不是说我不懂得怎么调用,而是我用了看似正确的调用方式,而其实这是一个坑。
我用了下面这种方式:
((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。
尊重劳动成果,转载请标明出处:http://www.cnblogs.com/tangZH/p/8575836.html
更多文章:http://77blogs.com/?p=630
在非activity类调用startActivityForResult的更多相关文章
- Android 非Activity类引用getResources()方法问题的解决方法
在进行Android开发的过程中,在一个非Activity类(此处假设类名为MyNewClass)中引用了getResources()方法,如下: Bitmap bmp = BitmapFactory ...
- Android中非activity类调用activity方法
例如需要使用: alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 第一种方法就是使其类变成Activity. 第二种方法便是 ...
- 调用startActivityForResult后,onActivityResult为什么立刻响应
现象 今天在编写代码的时候,涉及到两个Activity通过Intent来传值的问题.具体描述为:activity A调用startActivityForResult()函数启动Activit ...
- Android在 普通类(非Activity,多数为Adapter) 中 传输数据为空值 解决方法 :在startActivity 用 intent传输数据
这是bundle是传输不了数据的,获取到 出现这种情况的原因是非activity类中不存在Context,而在活动中传输数据时需要Context. 我收集到了两种解决方法. 1. 在调用该Adapte ...
- WebMethod在webservice里面非静态方法能调用,在页面类里面,静态方法才能调用
WebMethod在webservice里面非静态方法能调用,在页面类里面,静态方法才能调用
- android开发中关于继承activity类中方法的调用
android开发中关于继承activity类中的函数,不能在其他类中调用其方法. MainActivity.java package com.example.testmain; import and ...
- java 虚方法。 后面new 那个类, 就调用哪个类的方法 ,而非定义类的方案。 关于父子 类的 呵呵
java 虚方法. 后面new 那个类, 就调用哪个类的方法 ,而非定义类的方案. 关于父子 类的 呵呵 在多态的情况下,声明为父类类型的引用变量只能调用父类中的方法,但如果此变量 ...
- Activity类组成分析(一)Instrumentation
目录 前言 解剖 继承关系 重要成员 Instrumentation 总结 前言 要了解清楚StartActivity的过程,Activity对象实例的构造过程是重要组成部分:而要弄清楚Activit ...
- android 非activity如何得到布局文件 (java文件中获取布局文件)
Android中得到布局文件对象有两种方式第一种,在Activity所在类中this.getLayoutInflater().inflater(R.layout.布局文件名,null);第二种,在非A ...
随机推荐
- Java实现单例模式的9种方法
一. 什么是单例模式 因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 二. 单例模式的特点 1. 单例模式只能有一个实例. 2. 单例类必须创建 ...
- 音视频编解码技术(一):MPEG-4/H.264 AVC 编解码标准
一.H264 概述 H.264,通常也被称之为H.264/AVC(或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC) 1. H.264视频编解码的意义 H.264的出现就是为了创 ...
- [Swift]LeetCode911. 在线选举 | Online Election
In an election, the i-th vote was cast for persons[i] at time times[i]. Now, we would like to implem ...
- [Swift]LeetCode972.相等的有理数 | Equal Rational Numbers
Given two strings S and T, each of which represents a non-negative rational number, return True if a ...
- 【Spark篇】---SparkSQL on Hive的配置和使用
一.前述 Spark on Hive: Hive只作为储存角色,Spark负责sql解析优化,执行. 二.具体配置 1.在Spark客户端配置Hive On Spark 在Spark客户端安装包下sp ...
- sql server 性能调优之 死锁排查
一.概述 记得以前客户在使用软件时,有偶发出现死锁问题,因为发生的时间不确定,不好做问题的重现,当时解决问题有点棘手了.现总结下查看死锁的常用二种方式. 1.1 第一种是图形化监听: sqlserve ...
- 理解和使用Promise.all和Promise.race
一.Pomise.all的使用 Promise.all可以将多个Promise实例包装成一个新的Promise实例.同时,成功和失败的返回值是不同的,成功的时候返回的是一个结果数组,而失败的时候则返回 ...
- JavaScript面向对象--继承 (超简单易懂,小白专属)
一.继承的概念 子类共享父类的数据和方法的行为,就叫继承. 二.E55如何实现继承?探索JavaScript继承的本质 2.1构造函数之间的"复制粘贴" 第一条路是通过构造函数来继 ...
- 全文检索-Elasticsearch (二) CURD
ElasticSearch6.0以上版本的增删改查基本操作基于JSON的REST API与ElasticSearch进行通信.可以使用任何HTTP客户端来通信.当然ElasticSearch自己的文档 ...
- Jenkins结合.net平台综合之完整示例项目
前面每一个部分我们都是介绍的单个功能,这里介绍一个完整项目,本文中所用到的命令都放在了github示例代码仓库中 https://github.com/mrtylerzhou/netdevops 命令 ...