在非activity类调用startActivityForResult

时间:2022-11-29 10:10:21

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

我用了下面这种方式:

((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