首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在片段中使用registerForActivityResult时,永远不会调用回调

是因为在片段中使用registerForActivityResult方法时,需要确保在onActivityResult方法中正确处理回调结果。registerForActivityResult方法用于注册一个ActivityResultLauncher对象,用于启动其他Activity并接收返回结果。在片段中使用registerForActivityResult时,需要在片段的onActivityResult方法中调用ActivityResultCallback的onActivityResult方法来处理回调结果。

以下是一个示例代码:

代码语言:txt
复制
public class MyFragment extends Fragment {

    private ActivityResultLauncher<Intent> launcher;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
                result -> {
                    // 处理回调结果
                    if (result.getResultCode() == Activity.RESULT_OK) {
                        Intent data = result.getData();
                        // 处理返回的数据
                    }
                });
    }

    public void startOtherActivity() {
        Intent intent = new Intent(getActivity(), OtherActivity.class);
        launcher.launch(intent);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // 在片段中调用ActivityResultCallback的onActivityResult方法处理回调结果
        launcher.onActivityResult(requestCode, resultCode, data);
    }
}

在上述代码中,我们在片段的onCreate方法中注册了一个ActivityResultLauncher对象,并在回调方法中处理返回的结果。在startOtherActivity方法中,我们使用launcher对象启动其他Activity,并在onActivityResult方法中调用launcher的onActivityResult方法来处理回调结果。

这样,当其他Activity返回结果时,会触发片段的onActivityResult方法,从而调用回调方法处理返回的结果。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动开发平台:https://cloud.tencent.com/product/mmp
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙(Metaverse):https://cloud.tencent.com/product/metaverse

请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

浅谈javascript的回函数javascript的函数匿名函数回函数回函数的使用回函数实例总结

---- javascript的函数 javascript,函数也是一种data,一种数据,只不过这种数据比较特殊,它里面存的是代码,而且这种data可以被调用执行。...add的参数是两个函数,我们将one,two两个函数传进去,add执行one和two两个函数,这就是回函数。...js.PNG 回函数的使用 知道了什么是回函数,我们来看一下回函数的使用。 回函数有什么优势呢?...也就是为什么要使用回函数 它可以让我们不做命名的情况下传递函数(这意味可以减少变量名的使用) 我们可以讲一个函数调用操作委托给另一个函数(这意味着可以节省一些代码编写工作) 有助于提升性能 回函数实例...因此,我们可以使用回函数,将它们合二为一,这就要对multiplyByTwo函数做一些小改动,使其接受一个回函数,并在每次迭代操作调用它。

2.8K20
  • React useEffect中使用事件监听函数state不更新的问题

    很多React开发者都遇到过useEffect中使用事件监听函数获取到旧的state值的问题,也都知道如何去解决。...state值控制台打印结果如下图片手动实现的简易useEffect,事件监听回函数也会有获取不到state最新值的问题下面根据上面React代码模拟为常规的js代码let obj; // 模拟btn...纯函数组件每次state变化,React 函数会重新执行,所以我们可以进行如下模拟操作图片这个示例的运行过程就比较好理解,第一次执行App函数,初始化数据,Obj可以获取到函数内的a变量,因此,变量a所分配的内存不会释放...React函数也是一样的情况,某一个对象的监听事件的回函数,这个对象相当于全局作用域变量(或者与函数同一层作用域链),函数获取到的state值,为第一次运行时的内存的state值。...而组件函数内的普通函数,每次运行组件函数,普通函数与state的作用域链为同一层,所以会拿到最新的state值。

    10.8K60

    使用 Jetpack ActivityResult 处理 Activity 之间的数据通信

    作者 / Yacine Rezgui 无论您是应用请求某项权限,从文件管理系统中选择某个文件,还是期望从第三方应用获取到某些数据,都会涉及到 Activity 之间传递数据,而这也正是 Android...之前,想要从启动的 Activity 获取到返回结果,应用需要在 Activity 和 Fragment 实现 onActivityResult() 方法,然后检查回关联到哪一个 requestCode...但是这样的处理方式会让我们的代码变得非常复杂,并且也无法保证 Activity 发送或接收数据参数的类型安全。...您也可以启动 Activity 的地方使用一个独立的类接收返回结果,这样依然能够保证类型安全。 如何使用 接下来我们通过一个打开文档的示例,来演示如何使用 ActivityResult API。...正如您看到的代码片段,ActivityResult 处理来自 Activity 的返回数据带来了更便捷的开发体验。

    33510

    Oracle,若临时表空间使用率过高有什么优思路?

    ♣ 题目部分 Oracle,若临时表空间使用率过高有什么优思路?...当SQL语句中使用了诸如ORDER BY、GROUP BY子句,Oracle服务器就需要对所选取的数据进行排序,这时如果排序的数据量很大,那么内存的排序区(PGA)就可能装不下,所以,Oracle...当用户的SQL语句中经常有大规模的多重排序而内存的排序区不够使用临时表空间就可以改进数据库的效率。 临时表空间可以被多个用户共享,它不能包含任何永久对象。...临时表空间中的排序段是实例启动后当有第一个排序操作创建的,排序段需要可以通过分配EXTENTS来扩展并一直可以扩展到大于或等于该实例上所运行的所有排序活动的总和。...以上例子,TEMP表空间的TS#为3,所以TS#+1=4。如果想清除所有表空间的临时段,那么TS#设置为2147483647。

    2.3K30

    使用 Jetpack ActivityResult 处理 Activity 之间的数据通信

    作者 / Yacine Rezgui 无论您是应用请求某项权限,从文件管理系统中选择某个文件,还是期望从第三方应用获取到某些数据,都会涉及到 Activity 之间传递数据,而这也正是 Android...之前,想要从启动的 Activity 获取到返回结果,应用需要在 Activity 和 Fragment 实现 onActivityResult() 方法,然后检查回关联到哪一个 requestCode...但是这样的处理方式会让我们的代码变得非常复杂,并且也无法保证 Activity 发送或接收数据参数的类型安全。...您也可以启动 Activity 的地方使用一个独立的类接收返回结果,这样依然能够保证类型安全。 如何使用 接下来我们通过一个打开文档的示例,来演示如何使用 ActivityResult API。...正如您看到的代码片段,ActivityResult 处理来自 Activity 的返回数据带来了更便捷的开发体验。

    90430

    startActivityForResult被标记为弃用后,如何优雅的启动Activity?

    可以明显的看到,androidx.activity1.2.0-alpha04开始,Android这位你调用过无数次的startActivityForResult和onActivityResult,...但倘若编写一个稍复杂的页面,需要同时请求相册、需要在其它Activity选择数据并回、需要判断权限等等,继续使用startActivityForResult,会导致onActivityResult里掺杂各种嵌套及判断...返回该对象,这时并不会立即启动另一个Activity。...ActivityResultCallback 通过名字就可以了解到这是启动Activity并返回到当前Activity的结果回。...如果有需要,我会再写一篇使用较少的单独的类接收 Activity 结果和Activity Result API的源码解析。技术有限,若文中有错误遗漏之处,尽情谅解,也欢迎指正共同进步。

    2.6K20

    再见 onActivityResult!你好 Activity Results API

    它是一个抽象类,你需要继承它来创建自己的协议,每个 ActivityResultContract 都需要定义输入和输出类,如果您不需要任何输入,默认使用 Void( Kotlin 使用 Void?...Google也考虑到了这个问题,已经自定义了很多Contract,覆盖了开发使用场景。...非Activity/Fragment接收数据 Activity和Fragment,我们能直接使用registerForActivityResult方法 ,那是因为ConponentActivity...和Fragment基类实现了ActivityResultCaller 接口,非Activity/Fragment,如果我们想要接收Activity回传的数据,可以直接使用ActivityResultRegistry...register方法接受一个LifecycleOwner,合适的生命周期将回存入或移除Map,保证回响应的时机正确。

    1.4K30

    当面试官问你Promise的时候,他究竟想听到什么?

    传统的回调式异步操作有什么缺点 (Promise如何解决异步信任问题的) 传统的回有五大信任问题: 调用回太早 调用回调过晚(或没有被调用) 调用回次数过少或过多 未能传递所需的环境和参数 吞掉可能出现的错误和异常...如果Promise永远不被决议的话,Promise本身已提供了竞态的抽象机制来作为解决方案。 3.调用回次数过少或过多 Promise的定义方式使得它只能被决议一次。...5.吞掉可能出现的错误和异常 如果在创建Promise,存在JavaScript代码错误,会直接导致该Promise的拒绝决议,那么你可以通过reject()来捕获异常,代码的任何异常都不会吞掉。...而对于Promise对象来说,构造Promise实例的代码如果出错,则会被认为是一个拒绝的决议,并会向观察回传递异常信息。所以即使是一个异步的请求,Promise也是可以捕获异常的。...ES6也提供了标准的Promise供大家使用

    2.7K50

    【DB笔试面试669】Oracle,若临时表空间使用率过高有什么优思路?

    题目部分 Oracle,若临时表空间使用率过高有什么优思路?...当SQL语句中使用了诸如ORDER BY、GROUP BY子句,Oracle服务器就需要对所选取的数据进行排序,这时如果排序的数据量很大,那么内存的排序区(PGA)就可能装不下,所以,Oracle...当用户的SQL语句中经常有大规模的多重排序而内存的排序区不够使用临时表空间就可以改进数据库的效率。 临时表空间可以被多个用户共享,它不能包含任何永久对象。...临时表空间中的排序段是实例启动后当有第一个排序操作创建的,排序段需要可以通过分配EXTENTS来扩展并一直可以扩展到大于或等于该实例上所运行的所有排序活动的总和。...以上例子,TEMP表空间的TS#为3,所以TS#+1=4。如果想清除所有表空间的临时段,那么TS#设置为2147483647。

    1.1K30

    深入理解 JavaScript 回函数

    JavaScript 回函数是成为一名成功的 JavaScript 开发人员必须要了解的一个重要概念。但是我相信,阅读本文之后,你将能够克服以前使用回方法遇到的所有障碍。...最好将回函数作为回模式去使用。 为什么我们需要回 客户端 JavaScript 浏览器运行,并且浏览器的主进程是单线程事件循环。...为了防止阻塞长时间运行的操作,我们使用了回。 让我们深入研究一下,以便使你准确了解在哪种情况下使用回。 ?...如何使用回函数 我认为与其告诉你 JavaScript 回函数的语法,不如在前面的例子实现回函数更好。修改后的代码段显示在下面的截图中。 ?...用回函数显示消息 为了使用回函数,我们需要执行某种无法立即显示结果的任务。为了模拟这种行为,我们用 JavaScript 的 setTimeout() 函数。

    1.7K20

    【思考】$nextTick 与 setTimeout 的一点对比!

    并不是说如果你去掉nextTick,就不会得到同样的结果。然而,你应该明白,Vue会根据数据的内容对DOM进行修改。...在上面的代码片段,Vue将DOM更新为3,然后调用回,将DOM更新为2021,最后将控制权交给浏览器,浏览器将显示2021。...到目前为止,我们已经研究了nextTick队列插入回函数并在适当的时候执行该函数。 这个你可能会感兴趣,nextTick的回是作为事件循环中的一个微任务使用的。...在上面的代码片段,Vue将DOM更新为3,并提供浏览器控制。然后浏览器显示3,调用回函数,将DOM更新到2021,最后将控制权交给浏览器,现在浏览器显示2021。...何时使用 nexttick 当你想使用setTimeout 当你想确定DOM能反映你的数据 尝试执行异步操作,遇到Uncaught (in promise) DOMException等错误。

    1.7K30

    最全的JavaScript常见的操作数组的函数方法宝典

    reduceRigth() 使用指定的函数将数组元素进行组合 indexOf() 判断一个数该数组的索引位置 lastIndexOf() 判断一个数该数组的索引位置 find() 遍历数组,找出第一个符合回函数的元素...而是作为整体添加到了新数组 5、slice() slice()方法是返回指定的一个数组片段 该方法有两个参数,分别代表了数组片段的起始位置和结束位置,第一个参数不能省略,第二个参数可以省略 接下来看该方法的使用例子...,再将剩下的元素都放到一个新的数组并返回(不会改变原数组) 该方法只有一个参数,该参数为回函数,该回函数有两个参数,他们的含义分别为数组的元素 、 元素的索引 当回函数的返回值为true,即...) 该方法有一个参数,该参数为回函数,该回函数有一个参数,该参数含义是数组的每个元素 当每个元素调用回函数的返回值全部都为true,最后返回true;相反,只要有一个元素调用回函数,返回的值不为...当然了,这篇文章也是非常的基础,可以供大家在学习JavaScript基础使用,也可以作为一个宝典,忘记函数的使用方法或者参数的含义,可以来查阅。

    73600

    Jetpack:使用 ActivityResult 处理 Activity 之间的数据通信

    Android,我们如果想在Activity之间双向传递数据,需要使用startActivityForResult启动,然后onActivityResult处理返回,另外申请权限也是类似的步骤。...但是这样的处理方式会让我们的代码变得非常复杂,并且也无法保证 Activity 发送或接收数据参数的类型安全。...您也可以启动 Activity 的地方使用一个独立的类接收返回结果,这样依然能够保证类型安全。...ActivityResult使用 使用ActivityResult先添加依赖: dependencies { // https://developer.android.google.cn/jetpack...但是实际上返回是onActivityResult函数,这里就需要关注mPendingResults,ActivityResultRegistry的doDispatch函数为它赋予了数据,而doDispatch

    1.2K30

    JavaScript 编程精解 中文第三版 十一、异步编程

    雕刻或查找一段数据需要一些时间,所以长期存储的接口是异步的,并使用回函数。 存储器按照名称存储 JSON 编码的数据片段。...每次迭代器上调用next,函数都会运行,直到它碰到yield表达式,该表达式会暂停它,并使得产生的值成为由迭代器产生的下一个值。 当函数返回(示例的那个永远不会),迭代器就结束了。...每个片段可能会启动一些操作,并调度代码操作完成或失败执行。 在这些片段之间,该程序处于空闲状态,等待下一个动作。 所以回函数不会直接被调度它们的代码调用。...如果我从一个函数调用setTimeout,那么用回函数该函数已经返回。 当回返回,控制权不会回到调度它的函数。 异步行为发生在它自己的空函数调用堆栈上。...JavaScript 环境通常使用回函数来实现这种编程风格,这些函数动作完成被调用。 事件循环调度这样的回,使其适当的时候依次被调用,以便它们的执行不会重叠。

    2.7K20

    javascript异步与promise

    我们说处理javascript异步最常用的方式就是通过回函数,对于回函数我们昨天对此做了介绍 简单快速, 我们一般使用嵌套回或者链式回,会产生以下问题 当采用嵌套回,会导致层级太多,不利于维护...,就要考虑一些不可控因素 调用回调过早 调用回调过晚(或不被调用) 调用回次数过多或者过少 promise的存在就是为了解决以上问题 虽然我们日常写回函数不会有这么严格的要求,但是如果不这样去写回函数...then()的回永远都是异步执行的,所以promise不会出现回函数过早执行的情况 回函数调用过晚或不被调用 回函数调用过晚 回函数调用过晚的处理原理和调用过早很类似, promise的then...()存放着异步函数,所有的异步都存在于js的任务队列,当js的主线程执行完毕后,会依次执行任务队列的内容,不会出现执行过晚的情况 回函数不被调用 我们用栗子说话 const promise...'); 输出 //我主线程 //我是异步执行的失败:失败啦 当状态变为失败,就不会再变为成功,成功的函数也不会执行,反之亦然 调用次数过少 回函数正常是调用一次,过少=>0次=>回函数不被调用,

    90440

    JS的Callback VS Promise

    这篇文章不会讨论使用async / await执行Promise(尽管它们功能上是一样的,但在大多数情况下 async/await 才是真正的语法糖)。...Promise是JS对象,它们用于表示一个异步操作的最终完成 (或失败), 及其结果值.查看MDN 您可以通过使用回方法或使用Promise执行异步操作来获得结果。但是两者之间有一些细微的差异。...CallBack 和Promise之间的区别 两者之间的主要区别在于,使用回方法,我们通常只是将回传递给一个函数,该函数将在完成被调用以获取某些结果。...但是,Promise,您将回附加在返回的Promise对象上。...回地狱 使用回方法的一个常见问题是,当我们最终不得不一次执行多个异步操作,我们很容易以所谓的回地狱告终,这可能会成为噩梦,因为它导致难以管理且难读取。换句话说,这是每个开发者的噩梦。

    5.3K21
    领券