• 在非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

  • 相关阅读:
    ASP计算周开始和一年有多少周及某年第一周开始日期
    http://www.lancen.net/
    JSP的对象
    两个SQL语句
    sql 分頁
    网页特效制作汇总
    存储过程 解密
    一个计算周次和本周时间范围的代码(c#)
    Java试题
    如何在 VS 2005 里调试 Javascript
  • 原文地址:https://www.cnblogs.com/tangZH/p/8575836.html
Copyright © 2020-2023  润新知