gpt4 book ai didi

android - EventBus 发布无法更新工具栏标题。任何解决方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:02 27 4
gpt4 key购买 nike

我使用 EventBus (GreenRobot) 从 backgroundThread 发布到我的 Activity (这是一个 UiThread)。我可以开始一个 fragment 等。我也想更新我的标题,所以我做了如下。 (调用 Activity setTitle())

@Subscribe
public void onEvent(AuthenticationEvent event) {
setTitle(event.getTitle());
}

但是,报告如下错误。 (应用程序没有崩溃,但是日志中清楚地显示了错误,之后工具栏标题表现得很奇怪)。

E/EventBus: Could not dispatch event: class package.AuthenticationEvent to subscribing class class package.MainActivity
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6357)

有没有办法解决这个问题,让 EventBus 的帖子仍然允许我更新我的用户界面(例如标题)?

最佳答案

您只能从 UI 线程更新任何 UI 组件。如果您尝试从后台线程更新 UI,它将不起作用,并可能导致应用程序崩溃。

默认情况下,@Subscribe 方法将在发布线程中执行,这是您的后台线程。这就是为什么您的代码不起作用的原因。要使其工作,您必须使用 @Subscribe(threadMode = ThreadMode.MAIN) 以便它在 UI 线程中执行。对于您的特定代码:

// Called in Android UI's main thread
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(AuthenticationEvent event) {
setTitle(event.getTitle());
}

关于android - EventBus 发布无法更新工具栏标题。任何解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36745494/

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