zoukankan      html  css  js  c++  java
  • 在非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

  • 相关阅读:
    js查找字符串中重复的子字符串
    未知盒子宽高使盒子垂直水平居中
    标准盒模型和怪异盒模型的差异
    Vue练习(跑马灯效果)
    node后端中MVC与前端中的MVVM之间的区别
    ES6中对Promise解析
    ES6中对箭头函数的使用
    ES6对map解析
    ES6中对Set解析
    ES6解构赋值全了解
  • 原文地址:https://www.cnblogs.com/tangZH/p/8575836.html
Copyright © 2011-2022 走看看