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

  • 相关阅读:
    344. 反转字符串
    942. 增减字符串匹配
    CGO内部机制
    CGO函数调用
    CGO类型转换
    CGO基础
    Go net/http代理
    GO-中间件(Middleware )
    Go如何巧妙使用runtime.SetFinalizer
    ARM基础
  • 原文地址:https://www.cnblogs.com/tangZH/p/8575836.html
Copyright © 2020-2023  润新知