android - 奥托事件不开火

标签 android otto

我有一个 Activity ,它启动一个 DialogFragment,在完成一个事件后,DialogFragment 在 Otto 事件总线上发布一个事件,这是为了在它的父 Activity 中触发一个方法。我已经在此处发布了相关代码,相同的代码在我的应用程序的其他地方也有效,但这里的事件只是没有触发。

Activity 中的代码...

 @Subscribe
public void OttoUpdateUI(BudgetUpdateObject budgetUpdateObject)
{
    updateUI();
    Log.d("budget", "Otto updateUI called");
}

@Override
public void onResume() {
    super.onResume();
    BusStand.getInstance().register(BudgetActivityNew.class);
}

@Override
public void onPause() {
    super.onPause();
    BusStand.getInstance().unregister(BudgetActivityNew.class);
}

BusStand 类....

public final class BusStand {
private static final Bus BUS = new Bus();

public static Bus getInstance() {
    return BUS;
}

private void BusProvider() {

    }
}

和触发事件...

BusStand.getInstance().post(new BudgetUpdateObject());

我已经检查了 Activity 中的导入,我没有使用 Dagger 模块,也没有使用任何其他事件总线。任何帮助都感激不尽。

这是我从 Activity 中启动 DialogFragment 的方式....

AddBudgetDialogFragment addBudgetDialogFragment = new AddBudgetDialogFragment();
addBudgetDialogFragment.setStyle(DialogFragment.STYLE_NO_TITLE,0);
addBudgetDialogFragment.show(getSupportFragmentManager(),"DialogFragment");

最佳答案

问题是您没有注册 Activity 实例,您正在注册类:

BusStand.getInstance().register(BudgetActivityNew.class);

您应该将代码更改为:

BusStand.getInstance().register(this);

应该可以了。 :)

关于android - 奥托事件不开火,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32165006/

相关文章:

android - Otto - 在 Activity 生命周期之间发布消息

java - 避免第三个 Activity 回到第一个 Activity

android - 如何将 ViewModel 与 Repository 连接,以便将数据传播到 View(MVVM、Livedata)

android - 哪种 Activity 生命周期方法最适合注册/取消注册到事件总线?

android - 使用 Otto 将数据从 Activity 传递到 Fragment

android - 可以双向使用 Otto 事件总线吗?

android - 从 ics 中的库存启动器中删除指向我的应用程序的快捷方式

c# - 如何在 Unity 中从 Android 获取枚举

android - 在 Android 中将 byte[] 显示到 ImageView

java - BusProvider 未返回@Subscribe