问题标签 [greenrobot-eventbus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6696 浏览

android - 订阅者类没有在事件上调用的公共方法

使用绿色机器人事件总线时出现错误

细节:

我正在加载包含一个包含 10 个子片段的片段的 Activity,而不是调用 我在该片段的父活动中调用EventBus.getDefault().register(this);的每个嵌套(子)片段。register

0 投票
1 回答
6067 浏览

java - 如何使用 EventBus onEvent 方法?

我在我的 Android 应用程序中使用 EventBus。在我的 mainActivity 中,我有这个处理程序方法,它将实时数据发送到 EventBus,如下所示:

我正在使用 Fragments 类,我需要从处理程序接收消息。

我已经在 onCreateView 方法中注册了 Fragment 类,如下所示:

而且我有 onEvent 方法,该方法应该在有事件时调用。不幸的是,这个方法永远不会被调用。我认为这可能是被覆盖的方法,但似乎不是。

我需要做什么才能从 EventBus 中读取消息?

另外,在调试模式下,我在哪里可以看到正在创建的线程数?(我正在使用 Android Studio)

0 投票
4 回答
3972 浏览

android - 跨多个进程的 Otto/EventBus

是否可以使用OttoEventBuspost在一个进程中发生事件(例如,在SyncAdapter其中具有android:process=":sync"manifest 属性)并在另一个进程(在常规应用程序 UI 中)接收它?

我知道这一点,Intent并且BroadcastReceiver可以很好地跨多个进程进行通信,但我希望 Otto/EventBus 具有简单性和灵活性。

0 投票
6 回答
4085 浏览

android - 服务——分片通信

AnActivity包含 a Fragment,后者又包含一个 child Fragment,它请求 a Service。该应用程序尝试实现dobjanschi休息架构。

完成Service工作后,它必须传播操作结果。我尝试使用 a PendingIntent但它似乎只被活动捕获,而我需要子片段来获得通知。你有什么建议吗?粘合剂?greenRobot 事件总线?RxJava(我在项目中已经有了)?

谢谢。

0 投票
0 回答
849 浏览

android - 无法在 onPostResume() 中创建 DialogFragment - java.lang.IllegalStateException:在 onSaveInstanceState 之后无法执行此操作

我有一个 DialogFragment 我尝试在我的 Activity 的覆盖 onPostResume() 方法中创建,但我收到此错误消息:java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState

我已经阅读了类似问题的所有答案(此处此处此处和此处的博客),但没有一个对我有用(onPostResume 修复或 Runnable 修复),或者不适合 - 我不想使用 commitAllowingStateLoss 因为它不安全,而且我不想在不调用 super() 的情况下覆盖 onSaveInstanceState。

编辑:我已将问题缩小到我对 Eventbus 的使用。当我直接在 onPostResume 方法中创建对话框片段时,我没有收到任何错误。当我调用 eventbus 事件来创建对话框片段时,我得到了上述错误。我尝试将事件处理程序的线程更改为:

但这似乎没有什么不同。

编码:

追溯:

Android 4.0 和 4.4 都会出现此问题。

0 投票
2 回答
19599 浏览

android - 片段中的 GreenRobot EventBus 错误:没有为事件类注册的订阅者

我有一个活动,它的布局包含一个 FrameLayout。我使用框架布局作为片段容器。我使用 FragmentManager 事务替换 FrameLayout 中的片段。

在片段的 onCreate 方法之一中,我使用 EventBus 注册片段。

该片段的布局中有一个 GridView。每当单击 gridView 中的项目时,我都会将事件发布到 EventBus

此事件的事件处理程序方法在同一个片段中,即片段具有以下方法

这工作正常,直到应用程序失去焦点并变为非活动状态(由于按下主页按钮或屏幕锁定)。当我再次激活应用程序时,不会调用事件的事件处理程序。我可以在 LogCat 中看到以下语句

有人可以告诉我我在这里做错了什么吗?

编辑1:

当应用程序由于屏幕锁定或按下主页按钮而变为非活动状态时,将调用片段的 onStop 方法。从 EventBus 中注销片段的代码在 onStop 方法中。当应用程序再次激活时,将调用片段的 onStart 和 onResume 方法。所以我移动了我的代码,在其 onStart 方法中使用 EventBus 注册片段。

我放了一些日志语句来检查应用程序激活时是否实际调用了 onStart 方法。它正在被调用。当应用程序变为非活动状态然后再次活动时,仍然无法正常工作。

编辑 2 我忘了提到包含这个片段的活动也订阅了 EventBus。向 EventBus 注册活动的代码在其 onCreate 方法中,取消注册活动的代码在其 onStop 方法中。

0 投票
1 回答
264 浏览

java - 使用 Eventbus 重用事件对象

在我的应用程序中,我想使用事件总线每 10 毫秒触发一次事件。我正在使用GreenRobot Eventbus,我的代码如下所示:

这很好用,但我有点怀疑这是否有效,因为在这段代码中,每 ~10 毫秒DataEvent就会创建一个新对象。这真的是正确的方法吗?或者我应该DataEvent在外部的一个地方创建对象while loop并在应该触发新事件时重用它?

0 投票
1 回答
10185 浏览

java - Greenrobot EventBus 无法调度事件

我正在使用 EventBus 从长时间运行的线程与更新其 UI 的片段进行通信。这个长时间运行的线程基本上是在监听网络活动,解析它并将事件放在总线上。我设置了 2 个片段来接收事件。

从 Fragments 的 onEvent 方法更新 Fragments 的 UI(文本视图)时出现错误。如何从单独的线程更新片段中的 UI?

这是我看到的片段和 logcat 输出的代码......

日志猫:

这是其中一个片段(它们看起来相同):

onEvent 方法是我在这里寻找的地方。如果您在日志中注意到,该方法确实会被调用。但是,我无法点击其中的 textView。最初我只是持有对我在 onCreate() 方法中获取的 textview 的引用。但是我看到了你在事件处理中再次查找它的例子,所以我搬到了那个地方,没有运气。

如果我拿出:

然后一切正常。

我在这里想念什么?

0 投票
1 回答
2783 浏览

android - 订阅者类 ...TaskAdapter 没有称为 onEvent 的公共方法

我在使用 EventBus 时遇到了一些问题。特别是当我尝试运行应用程序时,它给了我错误

但是,它确实具有如下所列的公共方法。有谁知道为什么 Eventbus 会抛出这个异常?

谢谢!

我还尝试将 OnEventMainThread 方法更改为简单的 OnEvent。Etiher方式我得到同样的例外。如果有人好奇,请在下面发布完整的 LogCat。

编辑***********************************

迈克尔在下面发布了解决方案。onEvent 必须是 onEvent 而不是 OnEvent。

0 投票
1 回答
149 浏览

android - ListFragment 和 asynctask 问题 android

我试图在我的活动中间显示一个列表片段。列表片段适配器是具有典型 ViewHolder 模式的自定义适配器(从 BaseAdapter 扩展)。它被正确实施。

我使用 greenrobot Eventbus 设置了适配器,以从在后台执行查询的 asynctask 接收新的 List 对象(以免减慢 UI 主线程的速度)。

问题是列表片段最初没有数据库查询的结果,因此它默认为空(并在我的 xml 中显示 id 为“空”的主要活动的文本视图)。

最后,我的适配器和 listviewfragment 根本没有被实例化,因为它默认为空。

有没有更好的方法来做到这一点?如何让我的列表视图片段等待从 asyncTask 收到的数据?

我将只做一个带有列表视图的片段,而不是列表视图片段,我会看看这是否有帮助。