在非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
推荐阅读
-
在Python 中同一个类两个函数间变量的调用方法
-
C#接口在派生类和外部类中的调用方法示例
-
[ASP.NET]如何使用类创建公共函数,在不同ASP.NET页面间重复调用
-
java基础 静态 static 问在多态中,子类静态方法覆盖父类静态方法时,父类引用调用的是哪个方法?
-
在java中main函数如何调用外部非static方法
-
在Python 中同一个类两个函数间变量的调用方法
-
【译】在非泛型类中创建泛型方法
-
SpringCache @Cacheable 在同一个类中调用方法,导致缓存不生效的问题及解决办法
-
在同一个类中调用另一个方法没有触发 Spring AOP 的问题
-
在同一个类中调用另一个方法没有触发 Spring AOP 的问题