gpt4 book ai didi

java - 没有 onActivityResult 的 Activity 之间的 Android 通信

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:00 25 4
gpt4 key购买 nike

在我目前正在开发的应用程序中,我遇到了有关 Activity 之间通信的问题。
基本上我有一个 UI 组件,它类似于 Combobox。但是,此组件的可能值列表必须在新的 Activity 中开放。
因此,当您单击该组件时,将使用 startActivityForResult 打开一个新的 Activity
当您选择新值时,它会被放入 Bundle 中并返回到之前的 Activity。然后,我需要使用 onActivityResult 方法获取所选值并将其设置到组件。
这意味着,每个使用此组件的 Activity 都需要覆盖 onActivityResult 并使用新值刷新组件。
相反,我想要的是,该组件负责所有这些事情,您只需注册一个 Listener,就像您为 TextView 和类似组件所做的那样。
但目前我找不到一个好的方法来做到这一点,因为通信与 Activity 紧密绑定(bind),我只是无法获得 Activity onActivityResult 之外的。
有谁知道这个问题的好的解决方案吗?

最佳答案

对此的解决方案 - 使用 EventBus 并在其上发布粘性事件。通过这样做,您不必覆盖 onActivityResult

工作流程如下:- 使用您的数据创建事件对象- 从总线中删除所有相同类型的粘性事件- 通过 .sendSticky() 方法发布新值。

该事件将一直存在,直到有东西将其从总线上移除- 开始另一项 Activity - 在此 Activity 覆盖方法中,订阅该事件类型,其中: a) 用你的论点接受和处理事件 b) 将其从总线上移除- 在 onResume() 方法中订阅总线(第二个 Activity)- 在 .onPause() 方法中取消订阅总线

重点是,这允许您无缝处理第二个 Activity 的生命周期,并且您可以订阅/取消订阅基类中的总线

关于java - 没有 onActivityResult 的 Activity 之间的 Android 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40714705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com